关于百合网会员资料搜索爬取的相关思路

磊落不羁 by:磊落不羁 分类:爬虫 时间:2年前 阅读:74 评论:0

今天原本拿百合网做自动化识别的学习测试,在编写过程中发现了百合网如下的爬取思路,可以大批量的获取百合网的会员内容。

首先注册个账号,随后登录,便可进入百合网会员界面,随后可以点击搜索进入搜索。这都是正常操作。

https://search.baihe.com/

在百合网的搜索界面进入开发工具F12

在基本搜索界面随便输入条件进行搜索。在开发工具NETwork--XHR中可以看到以下两个链接的出现。

1.png


通过分析得知 getUserID页面是获取用户id列表的界面。getUserList?userID这个链接是通过getUserID所获取的列表进行的每次8个会员信息页面的展示。而getUserID每次获取的会员号列表是160个,截图如下:

2.png

说明getUserID这个页面就是我们需要的搜索信息的主要链接。那么信息是怎么来的呢?

仔细看发现,这个链接是通过POST的形式进行提交的  所以使用python获取信息的时候  requests.post(url,data,headers)的data就严格依照下列的包进行发送就OK。

3.png

仔细发现,其中高级搜索所需要会员权限的内容也在这个包内,那么在我们编写程序的时候也就意味着我们可以免费使用VIP搜索的功能了。

其中page是分页参数。如果填写2 那获得的会员号内容则是161-320个会员。这个参数的出现就意味着我们可以彻底爬取数据内容。

百合网的会员页面为:https://profile1.baihe.com/?oppID=会员号

通过我们获得的会员号列表进行一个循环

我们可以得到成千上万个链接地址

通过链接地址逐个访问可以保存所有的会员信息。

同时可以将这些信息存入数据库或者excel表格

因为数据量大,所以在爬取的过程中要考虑到使用进程池或者线程池进行爬取。加快爬取速度。


以上就是思路。

目前看不存在技术上的困难点,所以就不准备写这个程序了。


以下是自动化测试的代码,没写完,贴出来以后完善。

from selenium import webdriver
from selenium.webdriver.common.by import By
import time




web=webdriver.Chrome()
web.get("https://www.baihe.com/")
web.find_element(By.XPATH,'//*[@id="regForm"]/div[1]/a[2]').click()
time.sleep(1)
web.maximize_window()
web.find_element(By.XPATH,'//*[@id="loginForm"]/ul/li[1]/div[2]/div[1]/input').send_keys('user')
web.find_element(By.XPATH,'//*[@id="loginForm"]/ul/li[2]/div[2]/div[1]/input[1]').send_keys('pass')
web.find_element(By.XPATH,'//*[@id="loginForm"]/ul/li[5]/input').click()
time.sleep(10)

web.get("https://search.baihe.com/")
time.sleep(3)
web.find_element(By.XPATH,'//*[@id="close_box_1"]').click()
time.sleep(2)
web.find_element(By.XPATH,'//*[@id="basic"]/span').click()
web.find_element(By.XPATH,'//*[@id="start1"]').click()
time.sleep(1)
web.find_element(By.XPATH,'//*[@id="8632"]').click()
web.find_element(By.XPATH,'//*[@id="863207"]').click()
time.sleep(1)
web.find_element(By.XPATH,'//*[@id="basicLayer"]/div/a[1]').click()
input()



非特殊说明,本文版权归原作者所有,转载请注明出处

本文地址:http://php.liulei.com.cn/?type=acticle&id=48

评论列表

发表评论

  • 昵称(必填)
  • 邮箱
  • 网址

TOP