我试图弄清楚当你看不到HTML(即DOM抓取)时,数据抓取是如何工作的。在
我一直在尝试编写一个简单的Python代码来自动检索看到某个特定广告的人数:该部分显示“本周有3365人浏览了彼得的住处”
一开始我试着看看它是否显示在HTML代码中,但是找不到它。做了一些研究,发现并不是所有的东西都在代码中,因为浏览器可以通过JavaScript或其他我还不太懂的语言来处理。然后我检查了元素,意识到我需要使用Python库'retrieve'和'lxml.html'. 所以我写了这个代码:
import requests
import lxml.html
response = requests.get('https://www.airbnb.co.uk/rooms/501171')
resptext = lxml.html.fromstring(response.text)
final = resptext.text_content()
finalu = final.encode('utf-8')
file = open('file.txt', 'w')
file.write(finalu)
file.close()
这样,我就得到了一个包含网页中所有文本的代码,但不是我要查找的文本!这是个神奇的数字3365。在
所以我的问题是:我如何得到它?我想也许我没有使用正确的语言来获得DOM,也许它是用JavaScript完成的,而我只使用lxml。但是,我不知道。在
所以首先你需要弄清楚这段代码是否有任何唯一的标记。所以如果你看看你的HTML树
您需要的数据存储在“b”标记中。我不确定是否要使用lxml,但我通常使用beauthoulsoup进行刮擦。在
你可以参考http://www.crummy.com/software/BeautifulSoup/bs4/doc/这很直接。在
在页面加载后,您正在查看的DOM元素将被更新,该元素看起来像一个AJAX调用,具有以下请求URL:
如果获得该URL,它将返回以下JSON数据:
^{pr2}$如果您在“列出活动数据”下查找,您将找到您要查找的信息。将
/personalization.json
附加到任何文件室URL似乎都会返回此数据(目前)。在根据用户代理问题更新
看起来他们是基于用户代理过滤对这个URL的请求。为了解决这个问题,我必须在urllib请求上设置用户代理:
相关问题 更多 >
编程相关推荐