关于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() 你这个没必要用selenium啊,给自己添麻烦,直接request爬就行了还不用弄一堆xpath 感觉逻辑有问题。
for t in range(0,38)这一行
上面的list是获取的第一页的数据。
之后这个变量的值一直没变。
就算你打开了下一页,解析的还是第一页是数据 上面的兄弟说得对,list值没有改变,把list放到循环里就好了,第二个和第三个循环都是解析list的东西,list的值没有变化,所以你得到的只是最初的东西 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简单。 楚子沦i 发表于 2021-11-16 20:16
tree=etree.HTML(driver.page_source)
list=tree.xpath('//*[@id="books_conten ...
谢谢讲解,因为是课后作业所有用这个方法 Establish 发表于 2021-11-16 19:31
你这个没必要用selenium啊,给自己添麻烦,直接request爬就行了还不用弄一堆xpath
课后作业用这个,让我们熟练下 微笑怪士 发表于 2021-11-16 19:35
感觉逻辑有问题。
for t in range(0,38)这一行
上面的list是获取的第一页的数据。
已经解决了,谢谢,当局者迷了只在下面找错 MrHW1 发表于 2021-11-16 20:45
谢谢讲解,因为是课后作业所有用这个方法
噢噢,那你就每次翻页都重新获取一边html就好了
页:
[1]