我想让抓取工具转到下一页,以提取有关该怎么做的任何帮助。我有点迷失了该怎么做。我试过scrapy,但它有点复杂,而且bs4更方便。
import bs4 as bs
import urllib.request
import pandas as pd
import re
source = urllib.request.urlopen('https://messageboards.webmd.com/').read()
soup = bs.BeautifulSoup(source,'lxml')
df = pd.DataFrame(columns = ['link'],data=[url.a.get('href') for url in soup.find_all('div',class_="link")])
lists=[]
for i in range(0,33):
link = (df.link.iloc[i])
source1 = urllib.request.urlopen(link).read()
soup1 = bs.BeautifulSoup(source1,'lxml')
for url1 in soup1.find_all('a',class_="next"):
next_link = soup1.find('a',href = True, text = re.compile("next"))
if next_link:
lists.append(link+url1.get('href'))
答案 0 :(得分:0)
我遇到了同样的问题。这是我为练习抓取的页面的代码示例。我已经链接了多个网站请求以获取详细信息。
{{1}}
答案 1 :(得分:0)
所以看起来你将href存储在列表中
for url1 in soup1.find_all('a',class_="next"):
next_link = soup1.find('a',href = True, text = re.compile("next"))
if next_link:
lists.append(link+url1.get('href'))
现在你实际上必须对它们做点什么。在这种情况下,我假设您要导航到列表中的每个href。
for href in lists:
new_page = urllib.request.urlopen(href).read()
然后你可以从new_page中删除你想要的任何数据