爬取跳页后url不变的网页数据

目标网址: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也可以做到。

  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现网页url的多页数据,可以使用Spring Boot框架结合Jsoup来实现。 首先,需要确定要网页URL,并使用Jsoup来获该页面的内容。然后,通过分析网页结构,找到包含多页数据的元素,并提出每个数据项的URL。接下来,可以使用Java循环或递归实现遍历每个数据项的URL,以获相应的数据。 具体步骤如下: 1. 引入Jsoup依赖:在pom.xml文件中加入以下依赖: ``` <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.13.1</version> </dependency> ``` 2. 编写代码:通过Jsoup获主页面的内容,并解析出包含多页数据的元素。然后,遍历该元素中的所有数据项,依次获每个数据项的URL,并使用Jsoup获相应的数据。 ``` // 获主页面的内容 String url = "http://example.com/page1"; Document doc = Jsoup.connect(url).get(); // 解析出包含多页数据的元素 Element dataContainer = doc.select("div.data-container").first(); // 遍历数据项 Elements dataItems = dataContainer.select("div.data-item"); for (Element dataItem : dataItems) { // 获数据项的URL String dataUrl = dataItem.select("a").attr("href"); // 使用Jsoup获相应的数据 Document dataDoc = Jsoup.connect(dataUrl).get(); // 处理数据 } ``` 3. 实现翻页功能:如果需要多页数据,可以使用Java循环或递归实现。具体做法是,在循环或递归中,修改URL中的页码,并重复步骤2中的操作,以获相应的数据。 ``` for (int i = 1; i <= pageNum; i++) { // 修改URL中的页码 String url = "http://example.com/page" + i; Document doc = Jsoup.connect(url).get(); // 解析出包含多页数据的元素 Element dataContainer = doc.select("div.data-container").first(); // 遍历数据项 Elements dataItems = dataContainer.select("div.data-item"); for (Element dataItem : dataItems) { // 获数据项的URL String dataUrl = dataItem.select("a").attr("href"); // 使用Jsoup获相应的数据 Document dataDoc = Jsoup.connect(dataUrl).get(); // 处理数据 } } ``` 以上就是使用Spring Boot和Jsoup实现网页url的多页数据的方法。需要注意的是,在实现虫时,需要遵守相关法律法规,不得进行非法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值