h5网站开发语言选择,福建微网站建设公司,ceac网页设计师证书如何考,游戏网站建设的目的同事让帮忙在某个网站爬点数据#xff0c;首次尝试爬虫#xff0c;遇到的问题及解决思路记录下。
大体需求是需要爬取详情页内的信息#xff0c;详情页有一定格式规律#xff0c;但是详情页需要从列表页跳入#xff0c;列表页中的每一条记录需要鼠标悬停才会弹出跳转链接…同事让帮忙在某个网站爬点数据首次尝试爬虫遇到的问题及解决思路记录下。
大体需求是需要爬取详情页内的信息详情页有一定格式规律但是详情页需要从列表页跳入列表页中的每一条记录需要鼠标悬停才会弹出跳转链接点击后才可跳转然后将数据存在excel中一个个解决吧。
第一步是先爬取详情页的数据发现页面数据是js渲染出来的直接用请求获取不到信息于是使用selenium来模拟浏览器实际请求然后需要的各个标签值也都没有id就根据class来获取值的列表具体方法为
from selenium import webdriverstrurl https://xxxxxxxx?idstribrowser webdriver.Chrome()try:browser.get(strurl)item1 browser.find_elements(byBy.CLASS_NAME, valuexxxxxxxx)item2 browser.find_elements(byBy.CLASS_NAME, valueyyyyyyyy)item3 browser.find_elements(byBy.CLASS_NAME, valuezzzzzzzz)# text\n基本信息:\n# for str1,str2 in zip(item1,item2):# print(str1.text ,:,str2.text)# textstr1.text : str2.text\n #加入到字符串中并换行## for str in item3:# text\n使用案例: str.text\n #加入到字符串中并换行# print(str.text \n)finally:browser.close()获取到需要的值然后需要把值放到excel中使用openpyxl 将获取到的值拼成一行追加到excel中具体方法如下
from openpyxl import load_workbook# 打开 Excel 文件wb load_workbook(test.xlsx)# 选择要操作的工作表ws wb[Sheet2]new_data []for str2 in item2:new_data.append(str2.text)for str in item3:new_data.append(str.text)# 在最后一行添加数据ws.append(new_data)# 保存文件wb.save(test.xlsx)
这样单详情页的内容可以搞到excel中了需要搞抓所有记录的问题因为列表页首先也是js渲染出来的还有需要模拟悬停才能弹出跳转链接研究了下详情页的url都是xxx?idaaa这个aaa虽然是int但是也没规律随便找了几个值找不到对应页面的时候会报错但是列表请求页可以看到对于列表的分页请求相应为json格式有个列表包含各个对象的id值整好就是详情页的id值那就这么搞把列表信息通过这个请求模拟然后从相应里取各个id遍历跳转一开始尝试了将列表请求跟遍历详情页拼在一个方法里但是报“TypeError: WebElement object is not callable”这个错反正是自己用的小工具先解决需求就行分俩方法把id结果集自己拼过来当参数整合后参考代码如下凑合看吧 {code: 200,message: 操作成功,data: {pageNum: 2,pageSize: 10,totalPage: 10,total: 100,list: [{id: aaaa,logo: 6426cb.png},{id: bbbb,logo: 6426cb.png}]},requestId: abc
}import jsonwith open(searchResultP3.json, encodingutf-8) as f:jsondata json.load(f)jsonlist jsondata[data][list]datalist[]for objjson in jsonlist:strid str(objjson[id])datalist.append(strid)print(datalist)
from selenium import webdriver
from selenium.webdriver.common.by import By
from openpyxl import load_workbookimport jsonfor stri in [aaa, bbb, ccc]:strurl https://xxx?idstribrowser webdriver.Chrome()try:browser.get(strurl)item1 browser.find_elements(byBy.CLASS_NAME, valuexxxxx)item2 browser.find_elements(byBy.CLASS_NAME, valueyyyyy)item3 browser.find_elements(byBy.CLASS_NAME, valuezzzzz)# text\n基本信息:\n# for str1,str2 in zip(item1,item2):# print(str1.text ,:,str2.text)# textstr1.text : str2.text\n #加入到字符串中并换行## for str in item3:# text\n使用案例: str.text\n #加入到字符串中并换行# print(str.text \n)# 打开 Excel 文件wb load_workbook(test.xlsx)# 选择要操作的工作表ws wb[Sheet2]new_data []for str2 in item2:new_data.append(str2.text)for str in item3:new_data.append(str.text)# 在最后一行添加数据ws.append(new_data)# 保存文件wb.save(test.xlsx)finally:browser.close()