关于爬虫xpath的问题,求解答
本帖最后由 zhangsonghong00 于 2021-12-12 19:29 编辑新鱼油,第一次发帖。
学习了Python一个星期了,主要是看小甲鱼的视频。原谅我,可耻的还没买会员,只想白嫖。
一个人摸索比较困难,主要是错误点不知道在哪,还好有论坛可以交流。
-------笔趣阁小说爬虫------
1------------------搜索小说
2----------------------退出
请输入数字相应功能:1
请输入你想要爬取的小说:大梦主
Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\编程\爬虫.py", line 62, in <module>
main()
File "C:\Users\Administrator\Desktop\编程\爬虫.py", line 52, in main
find_book(book_url)
File "C:\Users\Administrator\Desktop\编程\爬虫.py", line 32, in find_book
x=root.xpath('//div[@class="item"]dl/dd/text')
File "src\lxml\etree.pyx", line 1582, in lxml.etree._Element.xpath
File "src\lxml\xpath.pxi", line 305, in lxml.etree.XPathElementEvaluator.__call__
File "src\lxml\xpath.pxi", line 225, in lxml.etree._XPathEvaluatorBase._handle_result
lxml.etree.XPathEvalError: Invalid expression
本来想上图的 但是好像没有权限可以上图。
虽然还没完整学习完小甲鱼的整个Python视频,但是尝试了自己爬虫笔趣阁,有成功也有失败的。
这个是失败的,在笔趣阁搜索页面,输入小说名字后,进行判定xpath解析是否为空[]列表,
但是xpath解析不出来,我用谷歌浏览器xpath helper 查件尝试了是可以解析出小说名字的。
求助下各位大大,这种是什么错误,xpath解析位置出错了吗?
还有如果有好心的大大,可以留言下发下关于爬虫12306抢票和爬虫电商---淘宝和京东的视频教程吗?不胜感激!
import os
import requests
from lxml import etree
from docx import Document
from urllib import parse
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'}
def search_book():
url='https://www.biqugeu.net/searchbook.php?keyword='
book_name=input('请输入你想要爬取的小说:')
book_name=parse.quote(book_name.encode('gbk'))
book_url=url+book_name
return book_url
def find_book(book_url):
url=book_url
html=requests.get(url,headers)
root=etree.HTML(html.content.decode('utf-8'))
x=root.xpath('//div[@class="item"]dl/dd/text')
if (root.xpath('//div[@class="item"]/dl/dd/text')==[]):
print('搜索的书不存在,请正确输入书名')
else:
print('找到了')
print(x)
def main():
print("-------笔趣阁小说爬虫------")
print("1------------------搜索小说")
print("2----------------------退出")
flag=int(input("请输入数字相应功能:"))
while 1:
if flag==1:
book_url=search_book()
find_book(book_url)
elif flag==2:
exit(1)
else:
input("请输入正确的命令:")
flag=int(input("请重新输入数字选择相应功能:"))
if __name__=='__main__':
main() zhangsonghong00 发表于 2021-12-12 19:23
import os
import requests
from lxml import etree
x=root.xpath('//div[@class="item"]dl/dd/text')
语法错误dl前应有斜杠 是这个问题。因为我xpath解析一直后一直显示的是空列表,所以一直换忘记加/斜杠,能不能在解答下为啥我xpath解析后一直是空的列表吗?
zhangsonghong00 发表于 2021-12-12 20:08
是这个问题。因为我xpath解析一直后一直显示的是空列表,所以一直换忘记加/斜杠,能不能在解答下为啥我xpat ...
你得看一下你要解析的内容是否在源码内
如果不在,当然解析不到 非常感谢{:5_110:},应该是我没完整打完代码吧 搜索完小说后跳转失败,所以后续的解析也是不成功。
一直是以为解析的内容出错了! 结合老哥给的答案,和百度搜了下这方面的内容。代码一共是有两个错误,一个是xpath解析的语法错误dl前应有斜杠----老哥说的很对。
另一个是在url输入小说名字,搜索跳转中文转码的时候,小说名字得用utf-8转码,我上面用的是gbk。
虽然还没学习到这方面的内容 ,但问题还是解决了
页:
[1]