赞
踩
这篇文章是基于我的上两篇文章而来,如果你还没有相关的基础知识(html,http),可以看一下:
我在第一篇文章中说到我们要爬的数据都是“嵌入”在源码中的,但是大家爬的网站慢慢多起来的时候,会发现我说的不对啊。怎么死活找不到目标数据呢?
下面我带大家一起走一遍那些年我踩过的坑:异步加载XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
ps:听名字觉得很高大上,但其实异步加载在一般情况下是比抓取页面源代码中的要简单一些
可能你看了定义还是不太明白,没关系,我来举栗子:
当年我学会爬简单的网页后,觉得自己牛B哄哄,没什么能够阻止我的爬虫
直到我被这个网页给教育了:
比如说我想拿日期,当我按照之前的套路写下了下面的代码后:
import requests
url = 'http://china.nba.com/players/stats/#!/klay_thompson'
r = requests.get(url,headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36'})
r.status_code
from lxml import etree
html = r.content.decode(r.encoding)
tree = etree.HTML(html)
tree.xpath("//tr[@class='ng-scope']/td[@class='ng-binding']/a/text()")
然鹅结果是:
r.status_code
Out[427]: 200
tree.xpath("//tr[@class='ng-scope']/td[@class='ng-binding']/a/text()")
Out[431]: []
在我反复的确认了我的xpath没写错后
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。