吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 778|回复: 8
收起左侧

[求助] 关于python爬虫与selenium相关问题求助

[复制链接]
MrHW1 发表于 2021-11-16 17:32
不知道为什么就只爬了第一页的数据,我也给了休息的时间呀,求大佬们看一下
from selenium import webdriver
from lxml import etree
from time import sleep
from selenium.webdriver.common.by import By
driver=webdriver.Chrome()
driver.get('https://www.ptpress.com.cn/search/books')
driver.find_element(By.ID,'searchVal').send_keys("python")
driver.find_element(By.XPATH,'//*[@id="app"]/div[1]/div/div/div[2]/button').click()
sleep(3)
tree=etree.HTML(driver.page_source)
list=tree.xpath('//*[@id="books_content"]')
for t in range(0,38):
    sleep(5)
    f=open('测试.txt', "a+", encoding='utf-8')
    for tu in list:
        for i in range(0,9):
            title= "".join(tu.xpath('.//div/a/p/text()').split())
            href="https://www.ptpress.com.cn"+ tu.xpath('.//div/div/a/@href')
            print(title)
            f.write("标题:"+title+" url: "+href+"\n")
    driver.find_element(By.CLASS_NAME,"ivu-page-next").click()
f.close()
driver.close()
driver.quit()

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Establish 发表于 2021-11-16 19:31
你这个没必要用selenium啊,给自己添麻烦,直接request爬就行了还不用弄一堆xpath
微笑怪士 发表于 2021-11-16 19:35
感觉逻辑有问题。
for t in range(0,38)这一行
上面的list是获取的第一页的数据。
之后这个变量的值一直没变。
就算你打开了下一页,解析的还是第一页是数据

免费评分

参与人数 1吾爱币 +1 收起 理由
MrHW1 + 1 谢谢@Thanks!

查看全部评分

dragonjelly 发表于 2021-11-16 19:46
上面的兄弟说得对,list值没有改变,把list放到循环里就好了,第二个和第三个循环都是解析list的东西,list的值没有变化,所以你得到的只是最初的东西
楚子沦i 发表于 2021-11-16 20:16
[Python] 纯文本查看 复制代码
tree=etree.HTML(driver.page_source)
list=tree.xpath('//*[@id="books_content"]')
for t in range(0,38):

这里有问题,你只获取了第一页的数据,然后虽然你在一直循环,但是没什么卵用,应该把获取页面的源代码放循环里面,其次最好不要给定值循环,可以获取一下他的页码。
然后就是他的数据是请求了https://www.ptpress.com.cn/booki ... word=python&jc=
可以写个循环一直请求这个连接就行了。
你这个也没啥验证,推荐用requests简单。

免费评分

参与人数 1热心值 +1 收起 理由
MrHW1 + 1 谢谢@Thanks!

查看全部评分

 楼主| MrHW1 发表于 2021-11-16 20:45
楚子沦i 发表于 2021-11-16 20:16
[mw_shl_code=python,true]tree=etree.HTML(driver.page_source)
list=tree.xpath('//*[@id="books_conten ...

谢谢讲解,因为是课后作业所有用这个方法
 楼主| MrHW1 发表于 2021-11-16 20:47
Establish 发表于 2021-11-16 19:31
你这个没必要用selenium啊,给自己添麻烦,直接request爬就行了还不用弄一堆xpath

课后作业用这个,让我们熟练下
 楼主| MrHW1 发表于 2021-11-16 20:54
微笑怪士 发表于 2021-11-16 19:35
感觉逻辑有问题。
for t in range(0,38)这一行
上面的list是获取的第一页的数据。

已经解决了,谢谢,当局者迷了只在下面找错
楚子沦i 发表于 2021-11-16 21:15
MrHW1 发表于 2021-11-16 20:45
谢谢讲解,因为是课后作业所有用这个方法

噢噢,那你就每次翻页都重新获取一边html就好了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 20:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表