【发布时间】:2020-09-11 23:29:12
【问题描述】:
于是我开始学习使用 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())
我收到一个错误:-
- 为什么第一段代码没有运行?
- 为什么第二个代码块给了我一个错误?这个错误是什么意思?
【问题讨论】:
-
如果您要搜索具有 class="r a" 或 class="a r" 的元素,不妨试试
cssselect(".r.a") -
为什么第二个代码块出错了,这是什么意思?
-
你为什么认为duckduckgo消息是错误的?该消息仅显示duckduckgo 检测到不理解javascript,并且duckduckgo 正在将您重定向到不同的页面。
-
但它没有打印除此之外的任何内容
-
您还期望第二个代码块打印出什么?
标签: python