目标网址:http://www.linked-brain-data.org/relateness/ListProtein2Gene?link=link3
该网页上的内容为与脑疾病有关的蛋白质基因等数据,对于跳页后URL变化的网站,可以观察url的变化情况,从而用一个循环就可爬取不同页面的数据内容。
但目标网页跳页后url未变化,是用了js跳页,针对这种情况,我在查阅资料时了解到有两种方法可以解决(1)用自动化测试工具selenium来模仿鼠标点击下一页,但这种方法比较慢而且不适用于大数据(https://www.cnblogs.com/sanduzxcvbnm/p/10276617.html)(2)抓包分析 (可用Fiddler,也可直接F12看network) 本次用第二种方法,该HTML采用了GET方法(不是POST),找到和页数有关的内容pagenum,代码如下:
import requests
import pandas as pd
import csv
for i in range(1,5568): #跳页
data={
'pagenum':i
}
url='http://www.linked-brain-data.org/relateness/ListProtein2Gene?link=link3'
s = requests.session()
d=s.get(url, params = data)
tb = pd.read_html(d.text)[0] #
tb.to_csv(r'Protein-Gene.csv', mode='a', encoding='utf_8_sig', header=0, index=0)
print('抓取完成')
由于抓取的是该网页的表格数据,所以直接用了panda库读取表格的操作,这种更为简单。
另外对于一般网页数据的爬取,excel也可以做到。