数据爬取中xpath的使用问题
import requestsfrom lxml import etree
url = "http://www.xinfadi.com.cn/priceDetail.html"
resp = requests.get(url)
tree = etree.HTML(resp.text)
table = tree.xpath("/html/body/div/div/div/div/div/div/div/table/tbody")
trs = table.xpath("./tr")
print(len(trs))
图片就是我查看元素的截图。
哪位大神帮忙看一下,
为啥我的运行结果是0呢?这是什么原因啊? 你 print(resp.text) 看看 Xpath没有提取到? F12看到的和源代码的不一样,你在源代码中搜不到 http://www.xinfadi.com.cn/getPriceData.html
xhr里找这个,post方法,参数是limit和current 我一开始用 tree.xpath('//tr') , 也是找不到 。。表头部分倒是可以找到,表数据好像是隐藏了?
然后,我就试试selenium,表数据就有了。。 {:10_297:} 不能懒 发表于 2021-8-28 17:52
Xpath没有提取到?
好像是,就是没有内容 qq1151985918 发表于 2021-8-28 17:41
你 print(resp.text) 看看
能打印出来,大概看了一下,看似好像里边没有数据一样。
不过还是看不懂! 南归 发表于 2021-8-28 18:34
http://www.xinfadi.com.cn/getPriceData.html
xhr里找这个,post方法,参数是limit和current
limit:
current:
pubDateStartTime:
pubDateEndTime:
prodPcatid:
prodCatid:
prodName:
这是我在你说的XHR里的表单数据里看到的,
不仅是有两个,后边那几个怎么办啊?能麻烦你给解释一下吗?谢谢啊 阿奇_o 发表于 2021-8-28 22:45
我一开始用 tree.xpath('//tr') , 也是找不到 。。表头部分倒是可以找到,表数据好像是隐藏了?
然后, ...
那这是为啥呢?你研究出来为什么用xpath找不到数据了吗? 江湖散人 发表于 2021-8-28 23:29
那这是为啥呢?你研究出来为什么用xpath找不到数据了吗?
不太了解这一块,只是打印了响应返回的内容,发现并没有表格数据这部分。
response.text 里都没有,那xpath自然就找不到了。
所以,可能是 requests.get()方法的问题吧,可能需要设置一些参数,或者用post方法?我不太懂这一块。。
阿奇_o 发表于 2021-8-29 00:42
不太了解这一块,只是打印了响应返回的内容,发现并没有表格数据这部分。
response.text 里都没有,那xp ...
好吧,谢谢你啊 江湖散人 发表于 2021-8-29 08:35
好吧,谢谢你啊
数据不是直接存放在网页里,需要找到存放数据的那个网址,检查里面网络里,可以一个个文件找到存放你要的数据的文件,或者刷新重新加载,等加载到你想要的数据时停止,找找你要的数据在那个文件里,然后再找到那个文件里的请求url就是你想要的数据真正存放的url 江湖散人 发表于 2021-8-28 23:28
limit:
current:
pubDateStartTime:
后面这几个不都是空值吗 江湖散人 发表于 2021-8-29 08:35
好吧,谢谢你啊
动态加载 本帖最后由 阿奇_o 于 2021-8-29 11:57 编辑
哈哈,我昨晚查了些资料,原来是requests等库不能"动态加载",只能获取到原始的HTML,而Selenium等则可以动态加载,所见则可以获取到。。
然后呢,若要用requests来做,需要进行"Ajax分析"。。我之前根本不懂什么是Ajax,哈哈哈
今天起来再研究了一下,它用的是POST方法,你仔细看看它的xhr会发现请求表数据地址是固定的:http://www.xinfadi.com.cn/getPriceData.html
返回的是JSON,你解析一下就好了。
概括起来就是,关键要用 request.post(url='http://www.xinfadi.com.cn/getPriceData.html', data=data)
#data类似headers也是个字典,聪明的你会找到它具体是什么的~ {:10_297:}
观望大神 南归 发表于 2021-8-29 10:03
后面这几个不都是空值吗
我看所有的都是空的。这是咋回事啊? 阿奇_o 发表于 2021-8-29 11:56
哈哈,我昨晚查了些资料,原来是requests等库不能"动态加载",只能获取到原始的HTML,而Selenium等则可以动 ...
谢谢啊 南归 发表于 2021-8-29 10:05
动态加载
如何动态加载啊?
用xpath就不好使了吗?
页:
[1]
2