python - 自动化无聊的东西(不能让 BeautifulSoup 解析 HTML)
问题描述
该脚本接受一个关键字,在 Google 上搜索它,然后在浏览器中打开结果选项卡。该脚本在该方法处返回一个空数组,select
我对为什么感到困惑。我检查了搜索结果的 HTML,CSS 选择器似乎应该可以工作。
#! /usr/bin/env python3
import webbrowser, sys, requests, bs4, pyperclip
if len(sys.argv) > 1:
address = ' '.join(sys.argv[1:])
else:
address = pyperclip.paste()
res = requests.get('https://www.google.com/search?q=' + address)
soup = bs4.BeautifulSoup(res.text, "lxml")
linkElems = soup.select('.r a')
numOpen = min(5, len(linkElems))
for i in range(numOpen):
webbrowser.open('http://google.com' + linkElems[i].get('href'))
解决方案
尝试User-Agent
在标题中设置 a :
from bs4 import BeautifulSoup
import requests
url = "https://www.google.com/search?q=python"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0"
}
response = requests.get(url, headers=headers)
assert response.status_code == 200
soup = BeautifulSoup(response.text, "html.parser")
for element in soup.select(".r a"):
print(element)
推荐阅读
- spring - 从 1.5.16 升级到 Spring Boot 2 时开始出现错误 NoClassDefFoundError: ObjectMapper
- angular - TypeScript 和 chai-as-promsied:最终是无效属性
- python - 未知 URL 类型:图像抓取
- javascript - TypeError - d 未定义
- mysql - 尝试在 mysql 中运行更新查询时出现语法错误
- c# - 从外部客户端成功调用 API,但从 C# 调用失败
- android - setOnClickListener 在 ActivityMain.java 中不起作用
- ios - 使用“com.apple.system.config.network_change”通知检测网络可达性变化是否安全?
- ios - 以下 pod 被集成到没有相同 Swift 版本的目标中
- python - Python热图和颜色条颜色不同