Python通过urllib批量爬取网页链接
为了通过爬虫快速获取网站中的信息,我们通常将第一次爬取的网页中的url形成一个待爬取的列表
为了访问网站以及对网站源代码进行分析,这里使用urllib的request库获取网页源代码,使用lxml库对网页进行结构分析。
首先引用需要的库
import urllib.request import lxml.etree
接下来我们从中获取网页中的url链接以及其文本标题,保存到文件夹中,这里采用文本文件的形式进行保存
def htmlanalyze(url1): text = requests.get(url1).text doc = lxml.etree.HTML(text) root = doc.xpath("/nodename") print(root) f=open("./data/"+'allessi.txt','a') print(len(text)) for line in text: line_name = line.xpath("./a/text()")[0].strip() line_url = line.xpath("./a/@href")[0] f.write(line_name+'$$'+line_url+'\n')
从一个网页中获取url列表之后,我们将其进行去重,排序处理,之后就可以循环对列表中的url进行访问了
在爬取的过程中由于高频率的多次访问同一个网站,而正常浏览网页不会出现那么频繁的访问行为,对于有反爬虫或其他保护机制的网站会对异常访问的IP采取访问限制,这里有几种应对措施。
1.对于高频访问导致的访问限制,可以通过主动降低访问频率来避免被服务端限流,可在程序中加入sleep函数增加网站访问的时间间隔。
这里使用python自带的time库
import time
在循环访问网页的位置添加以下代码即可,括号中的delay为希望程序的延迟时间,单位为秒
time.sleep(delay)
2.通过代理使用不同的ip地址对网站进行访问。
不同的IP可以在网上找到一些可以使用的免费ip资源,注意大多数ip不是永久有效的。
需要定时更新ip列表。