我尝试了此代码,但带有URL的列表保持为空。没有错误的按摩,什么都没有。
from bs4 import BeautifulSoup
from urllib.request import Request, urlopen
import re
req = Request('https://www.metacritic.com/browse/movies/genre/date?page=0', headers={'User-Agent': 'Mozilla/5.0'})
html_page = urlopen(req).read()
soup = BeautifulSoup(html_page, features="xml")
links = []
for link in soup.findAll('a', attrs={'href': re.compile("^https://www.metacritic.com/movie/")}):
links.append(link.get('href'))
print(links)
我要抓取在给定URL“ https://www.metacritic.com/browse/movies/genre/date中找到的所有以“ https://www.metacritic.com/movie/ ”开头的URL吗? page = 0 “。
我究竟做错了什么?
首先,您应该使用标准库“ html.parser”而不是“ xml”来解析页面内容。它可以更好地处理损坏的html(请参阅Beautiful Soup findAll找不到全部)
然后看一下您正在解析的页面的源代码。您要查找的元素如下所示:<a href="/movie/woman-at-war">
因此,像这样更改代码:
from bs4 import BeautifulSoup
from urllib.request import Request, urlopen
import re
req = Request('https://www.metacritic.com/browse/movies/genre/date?page=0', headers={'User-Agent': 'Mozilla/5.0'})
html_page = urlopen(req).read()
soup = BeautifulSoup(html_page, 'html.parser')
links = []
for link in soup.findAll('a', attrs={'href': re.compile("^/movie/")}):
links.append(link.get('href'))
print(links)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句