话不多说,直接开车!
分析美人库页面
然后,我们随便查看一个美女的首页,比如:
按照我们之前的爬取经验,这个地址应该能够从一开始的页面找到,毕竟是从那跳转过来的,于是,我们在页面源码中查找:
竟然没有?!不论怎么查找,都找不到。这是什么情况?
答案是Ajax
。
我们用Chrome的开发者工具查看一下,或许能找到答案。
从图中,我们可以看到好多请求,点击XHR
选项卡,
有两个Ajax
请求,点击第二个(第一个是第一页的Ajax
)查看:
看到了宴宴的信息,原来之前看到的图片个人信息啥的,都是用Ajax
加载过来的!
分析个人主页
分析个人相册页
个人相册当我们查看个人相册页源码时,又发现:
什么都没有!老一套,于是我们再次打开了Chrome开发者工具,
果然,又是Ajax
请求!
这也提醒我们只要,我们获得了这个请求的响应内容,爬取图片什么的,都不是事儿了!
user_id(XXXXXX)怎么弄
经过孜孜不倦的分析,我们终于发现,原来到达其他网页,比如个人首页,相册页等,最重要的就是user_id
那一串数字了,那么那串数字怎么来的呢?
这就得回到我们最开始分析的地方,在分析美人库的时候其实已经得到了:
得到了user_id,再加上我们对URL的分析,我们可以随心所欲了,想爬哪爬哪!
最后附上部分源码,其他的可以根据自己的需求补充或修改:
mport json
import random
import urllib.request
from urllib.request import Request
import chardet
import urllib.parse
user_agent = [
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; CLR 2.0.50727; CLR 3.5.30729; CLR 3.0.30729; Media Center PC 6.0;
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
]
def getMMData(url,currentPage=0):
formdata = {
'q':'',
'viewFlag':'A',
'sortType':'default',
'searchStyle':'',
'searchRegion':'city:',
'searchFansNum':'',
'currentPage': currentPage,
'pageSize': '100'
}
formdata = urllib.parse.urlencode(formdata)
headers = {'User-Agent': random.choice(user_agent)}
requ = Request(url,data=bytes(formdata,'utf-8'),headers=headers)
data = urllib.request.urlopen(requ).read()
data = data.decode(chardet.detect(data)['encoding'])
dataToDict = json.loads(data)
return dataToDict['data']['searchDOList']
# 获取ID
def getMMID(data):
ID = []
for i in data:
ID.append(i['userId'])
return ID
if __name__ == '__main__':
url =
# for i in getMMData(url,1):
# print(i['userId'])
data = getMMData(url)
ID = getMMID(data)
print(ID)
然后再次附上扒图结果:
以上。