MrHW1 发表于 2021-11-16 17:32

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

不知道为什么就只爬了第一页的数据,我也给了休息的时间呀,求大佬们看一下
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/div/div/div/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是获取的第一页的数据。
之后这个变量的值一直没变。
就算你打开了下一页,解析的还是第一页是数据

dragonjelly 发表于 2021-11-16 19:46

上面的兄弟说得对,list值没有改变,把list放到循环里就好了,第二个和第三个循环都是解析list的东西,list的值没有变化,所以你得到的只是最初的东西

楚子沦i 发表于 2021-11-16 20:16

tree=etree.HTML(driver.page_source)
list=tree.xpath('//*[@id="books_content"]')
for t in range(0,38):

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

MrHW1 发表于 2021-11-16 20:45

楚子沦i 发表于 2021-11-16 20:16
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就好了
页: [1]
查看完整版本: 关于python爬虫与selenium相关问题求助