使用selenium爬取特定关键词作者的知乎文献引用部分

这段代码演示了如何使用 Selenium 和 Chrome 浏览器驱动进行网页自动化操作,以规避服务器的机器人检测。主要步骤包括输入关键词、选择搜索条件、点击作者、筛选作者身份并执行搜索。之后,代码逐页抓取并解析论文作者信息,存储到数据列表中,直至无下一页。整个过程涉及网页元素定位、点击、等待和数据提取,适用于网络爬虫和数据抓取场景。
摘要由CSDN通过智能技术生成

```python
在这里插入
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
data1 = []
c=0
# 让服务器识别不出是selenium机器人
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",{
  "source": """
    Object.defineProperty(navigator, 'webdriver', {
      get: () => undefined
    })
  """
})

driver.get('https://kns.cnki.net/kns8/defaultresult/index')
time.sleep(2)


driver.find_element(By.ID,"txt_search").send_keys('关键词作者')   # .send_keys()  向搜索框中输入内容
driver.find_element(By.XPATH,'/html/body/div[2]/div/div[2]/div[1]/div[1]/div[1]').click()#点击主题
time.sleep(2)
driver.find_element(By.XPATH,'/html/body/div[2]/div/div[2]/div[1]/div[1]/div[2]/ul/li[6]/a').click()#点击作者
time.sleep(3)
driver.find_element(By.XPATH,'/html/body/div[2]/div/div[2]/div[1]/div[1]/div[2]/ul/li[6]/a').click()#点击作者
time.sleep(2)
driver.find_element(By.XPATH,'/html/body/div[2]/div/div[2]/div[1]/input[1]').click()#再次点击作者搜索框选中身份
time.sleep(3)
driver.find_element(By.XPATH,'/html/body/div[2]/div/div[2]/div[1]/div[2]/ul/li[1]/div/label/input').click()#选中身份
time.sleep(2)
driver.find_element(By.CLASS_NAME,"search-btn").click()       # .click() 代表点击动作
time.sleep(2)
while True:
    for i in range(0,20):
        driver.find_element(By.XPATH,'//*[@id="gridTable"]/table/tbody/tr[{}]/td[9]/a[4]/i'.format(i+1)).click()
        time.sleep(3)
        if c>=0:
            trs = driver.find_element(By.XPATH,"//*[@id='layui-layer{}']/div[2]/table/tbody/tr[1]/td[2]".format(i+c*20+1)).text            
        time.sleep(5)
        data1.append(trs)
        driver.find_element(By.XPATH,'//*[@id="layui-layer{}"]/span/a'.format(i+c*20+1)).click()
        time.sleep(3)
        print(len(data1))
        
    # 下一页
    try:
        next = driver.find_element(By.ID,"PageNext").click()
        c = c+1
        time.sleep(4)
#         html = driver.page_source
#         print(html)
    except:
        print("没有下一页了")
        break
driver.quit()
print(data1)代码片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值