python - 在 python 中使用 urllib 解析谷歌搜索结果时出错
问题描述
所以我开始使用 urllib 和 bs4 在 python 中学习网页抓取,
我正在寻找要分析的代码,我发现了这个:- https://stackoverflow.com/a/38620894/14252018 这是代码:-
from urllib.parse import urlencode, urlparse, parse_qs
from lxml.html import fromstring
from requests import get
raw = get("https://www.google.com/search?q=StackOverflow").text
page = fromstring(raw)
for result in page.cssselect(".r a"):
url = result.get("href")
if url.startswith("/url?"):
url = parse_qs(urlparse(url).query)['q']
print(url[0])
当我尝试运行它时,它不会打印任何东西
于是我尝试使用 bs4,这次我选择了https://www.duckduckgo.com
并将代码更改为:-
import bs4 as bs
import urllib.request
sauce = urllib.request.urlopen('https://duckduckgo.com/?q=dinosaur&t=h_&ia=web').read()
soup = bs.BeautifulSoup(sauce, 'lxml')
print(soup.get_text())
我收到一个错误:-
- 为什么第一个代码块没有运行?
- 为什么第二个代码块给了我一个错误?这个错误是什么意思?
解决方案
将您的 duckduckgo URL 更改为该站点在未启用 javascript 时尝试将您重定向到的位置。
import bs4 as bs
import urllib.request
# url = 'https://duckduckgo.com/?q=dinosaur&t=h_&ia=web' # uses javascript
url = 'https://html.duckduckgo.com/html?q=dinosaur' # no javascript
sauce = urllib.request.urlopen(url).read()
soup = bs.BeautifulSoup(sauce, 'lxml')
print(soup.get_text())
推荐阅读
- mysql - How to get the current rounded hour in MySQL?
- sql - How to rank salesman changing in the time on a contract
- c++ - 如何在 UDX 函数 agg_concatenate 中增加结果字符串的最大长度
- node.js - Install node CLI tool written in TypeScript
- c# - How to use Openstreetmap(osm) offline tiles file in .net core?
- powershell - 否定必须在 PowerShell 脚本上按 Enter 两次
- amazon-web-services - AWS S3 NoSuchKey when trying to open subfolder
- angular - 角度命名的路由器插座不显示组件
- sql - How to fix " Aggregate functions (COUNT, AVG, SUM, MIN, MAX) are not allowed outside SELECT or HAVING clauses" Error in HFSQL
- python - 将边界框提取为 .jpg