Webcrawler多页面迭代

时间:2017-01-20 05:24:25

标签: python web-scraping beautifulsoup web-crawler bs4

我想让抓取工具转到下一页,以提取有关该怎么做的任何帮助。我有点迷失了该怎么做。我试过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'))

2 个答案:

答案 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中删除你想要的任何数据