分析网页
今日头条的网页是通过AJAX加载的所以如果单纯的复制网页是无法查看到内容的,只能看到一堆字典形式HTML代码。
这里发现URL的参数共有offset,format,keyword,autoload,count,cur_tab,from,这七种。
往下翻,在Query String Parameters中就能发现这些参数
往下翻,查看新的AJAX,点开NETWORK对比Query String Parameters,会发现只有offset发生了变化
再回过头观察Query String Parameters 和requests.URL。会发现从https://www.toutiao.com/search_content/?
后开始参数都是按顺序拼接的。
代码
import requests,json
from bs4 import BeautifulSoup
from requests.exceptions import RequestException
def get_page():
url = 'https://www.toutiao.com/search_content/?'
params={
'offset':' 0',
'format': 'json',
'keyword': '街拍',
'autoload':'true',
'count': '20',
'cur_tab': '1',
'from': 'search_tab',
}
#requests自带params参数能够补全URL可代替urllib.urlopen()的拼接
response = requests.get(url,params=params)
try:
if response.status_code == 200:
#如果状态码为200(即响应成功)则返回json格式的响应内容
#在requests中自带json()方法
return response.json()
else:
return None
except RequestException as f:
return f
def main():
html = get_page()
#输出响应内容
print(html)
if __name__ == '__main__':
main()
返回的结果如下
返回了一堆杂乱的json代码,但是chrome功能十分强大,自动帮整理。点开Preview,需要的东西全在data中