写这个是为了寻求一个可以实现模拟登录功能的大佬,我已经实现了,爬取第一页,但是到了第二页需要登录,我就不会了。或者有想法一起探讨。会写先登录然后再爬取的也行。
import time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import openpyxl as op
import csv
from urllib.parse import urljoin
ws=op.Workbook()
wb=ws.create_sheet(index=0)
wb.cell(row=1,column=1,value='企业名称')
wb.cell(row=1,column=2,value='统一社会信用代码')
wb.cell(row=1,column=3,value='法定代表人')
wb.cell(row=1,column=4,value='经营状态')
wb.cell(row=1,column=5,value='成立日期')
wb.cell(row=1,column=6,value='行政区划')
wb.cell(row=1,column=7,value='注册资本')
wb.cell(row=1,column=8,value='实缴资本')
wb.cell(row=1,column=9,value='企业类型')
wb.cell(row=1,column=10,value='所属行业')
wb.cell(row=1,column=11,value='工商注册号')
wb.cell(row=1,column=12,value='组织机构代码')
wb.cell(row=1,column=13,value='纳税人识别号')
wb.cell(row=1,column=14,value='纳税人资质')
wb.cell(row=1,column=15,value='营业期限')
wb.cell(row=1,column=16,value='核准日期')
wb.cell(row=1,column=17,value='登记机关')
wb.cell(row=1,column=18,value='参保人数')
wb.cell(row=1,column=19,value='曾用名')
wb.cell(row=1,column=20,value='注册地址')
wb.cell(row=1,column=21,value='经营范围')
wb.cell(row=1,column=22,value='主管部门名称')
wb.cell(row=1,column=23,value='持股比例')
wb.cell(row=1,column=24,value='认缴出资额')
wb.cell(row=1,column=25,value='认缴出资日期')
#get直接返回,不再等待界面加载完成
desired_capabilities = DesiredCapabilities.CHROME
desired_capabilities["pageLoadStrategy"] = "none"
# 设置谷歌驱动器的环境
options = webdriver.ChromeOptions()
# 设置chrome不加载图片,提高速度
#options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})
# 设置不显示窗口
#options.add_argument('--headless')
# 创建一个谷歌驱动器
driver = webdriver.Chrome(options=options)
# 设置搜索主题
theme = "施工图审查"
# 设置所需篇数
papers_need = 20
# 打开页面
#driver.get("https://aiqicha.baidu.com/s?q=%E6%96%BD%E5%B7%A5%E5%9B%BE%E5%AE%A1%E6%9F%A5&t=0")
driver.get("https://aiqicha.baidu.com/s?q=%E6%96%BD%E5%B7%A5%E5%9B%BE%E5%AE%A1%E6%9F%A5")
# 传入关键字
WebDriverWait( driver, 100 ).until( EC.presence_of_element_located( (By.XPATH ,'''//*[@id="aqc-header-search-input"]''') ) ).send_keys(theme)
# 点击搜索
WebDriverWait( driver, 100 ).until( EC.presence_of_element_located( (By.XPATH ,"/html/body/div[1]/div[1]/header/div/div[2]/button") ) ).click()
time.sleep(3)
# 点击切换中文文献
# 获取总文献数和页数
# 赋值序号, 控制爬取的文章数量
count = 1
# 当,爬取数量小于需求时,循环网页页码
while count <= papers_need:
# 等待加载完全,休眠3S
time.sleep(3)
title_list = WebDriverWait( driver,1 ).until( EC.presence_of_all_elements_located( (By.CSS_SELECTOR ,"body > div.base.page-search.has-search-tab > div.aqc-content-wrapper.has-footer > div > div.main > div.list-wrap > div.company-list > div > div:nth-child(-n+10) > div.info > div > h3 > a") ) )
# 循环网页一页中的条目
for i in range(len(title_list)):
try:
term = count%10 # 本页的第几个条目