关于百合网会员资料搜索爬取的相关思路
今天原本拿百合网做自动化识别的学习测试,在编写过程中发现了百合网如下的爬取思路,可以大批量的获取百合网的会员内容。
首先注册个账号,随后登录,便可进入百合网会员界面,随后可以点击搜索进入搜索。这都是正常操作。
在百合网的搜索界面进入开发工具F12
在基本搜索界面随便输入条件进行搜索。在开发工具NETwork--XHR中可以看到以下两个链接的出现。
通过分析得知 getUserID页面是获取用户id列表的界面。getUserList?userID这个链接是通过getUserID所获取的列表进行的每次8个会员信息页面的展示。而getUserID每次获取的会员号列表是160个,截图如下:
说明getUserID这个页面就是我们需要的搜索信息的主要链接。那么信息是怎么来的呢?
仔细看发现,这个链接是通过POST的形式进行提交的 所以使用python获取信息的时候 requests.post(url,data,headers)的data就严格依照下列的包进行发送就OK。
仔细发现,其中高级搜索所需要会员权限的内容也在这个包内,那么在我们编写程序的时候也就意味着我们可以免费使用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()
评论列表
发表评论