使用request.get检索时,值不显示

时间:2018-10-25 16:59:23

标签: python-3.x web-scraping

我正在使用Python刮擦其html的零售商网站。我在他们的空调产品上寻找数据和属性,例如能源效率,恒定或可变类型等。因此,我使用了request.get(),之后我打算使用正则表达式或bs4过滤数据。 / p>

file_number = 0
for portal in portals:
   item = requests.get(portal)
   item_text = str(item.text)
   file_number += 1
   file_name = "blah" + file_number.zfill(4) + ".txt"
   file = open(file_name,"w",encoding="utf8") 
   file.write(item_text)
   file.close()

我可以从我编译的set()中检索所有html页面。但是,产品价格缺失。如果我转到页面并直接右键单击->检查,则会显示此信息。

下面的示例只是这些差异的一个实例。这两个文件是相同的,只是省略了所有对价格的引用(只是一个疯狂的猜测:价格可能会略有不同,具体取决于谁在购物,这就是为什么以某种方式单独存储它们的原因。)

也很高兴听到任何有关代码改进的建议,我是python的新手!

requests.get()版本的信息

<div class="p-price">
<strong class="J-p-32965125681"></strong> <span>X <span class="J-buy-num"></span></span>
</div>

vs 右键单击->检查信息版本

<div class="p-price">
<strong class="J-p-32965125681">¥3499.00</strong> <span>X <span class="J-buy-num"></span></span>
</div>

非常感谢您!

顺便说一句,免责声明robots.txt说: 用户代理: * 不允许: /?* 而且我没有抓取任何带有“?”的页面在他们的网址中,这样...

1 个答案:

答案 0 :(得分:0)

网页抓取非常棘手!

乍一看,这些值似乎是通过javascript添加的。在这种情况下,您需要使用无头浏览器或扩展程序来在页面结束加载后而不是站点上的基本HTML页面清除DOM