当我出于学习目的而尝试解析https://www.forbes.com/时。当我运行代码时,它只能解析一页,即主页。
我该如何解析整个网站,我是指网站中的所有页面。
我的尝试代码如下:
from bs4 import BeautifulSoup
import re
from urllib.request import urlopen
html_page = urlopen("http://www.bdjobs.com/")
soup = BeautifulSoup(html_page, "html.parser")
# To Export to csv file, we used below code.
links = []
for link in soup.findAll('a', attrs={'href': re.compile("^http")}):
links.append(link.get('href'))
import pandas as pd
df = pd.DataFrame(links)
df.to_csv('link.csv')
#print(df)
您能告诉我如何解析整个网站,而不是一页吗?
答案 0 :(得分:1)
您有两种选择,这取决于您要实现的目标。
编写自己的搜寻器
与您在代码段中尝试执行的操作类似,从网站上获取一个页面,标识该页面中所有有趣的链接(使用xpath,正则表达式等),然后进行迭代,直到您访问了整个页面域。
这可能最适合于学习爬网的基础知识或作为一次性任务快速获取一些信息。
您必须注意一些想法,例如不要两次访问相同的链接,限制域名以避免访问其他网站等。
使用网络抓取框架
如果您打算对生产应用程序进行大规模的刮刮或大规模刮刮,请考虑使用诸如scrapy之类的框架。
它为您解决了许多常见问题,这是通过阅读文档并深入研究代码来学习高级Web抓取技术的好方法。