1、首先把需要的库安装一下,pip isntall requests,pip install pyquery ,urlencode是python3内置了不用安装
2、然后我们分析下要爬取的网页,我这里以豆瓣电影为例,打开页面打开浏览器开发者工具,点Network选项,然后刷新网页,再选取淌捌釜集XHR这种就是AJAX传来的数据了,经分析我们要爬取的首页电影网址为:https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&page_limit=50&page_start=0https://movie.douban.com/j/search_subjects?这条后面跟着参数,不同参数返回不同内容,这条就是返回了 热门的50条内容
3、接下来开始写代码先引入需要的库fromurl盟敢势袂lib.parseimporturlencodefrompyqueryimportPyQueryaspqimportrequestsURL和请求头伪装浏览器访问hot_url='https://movie.douban.com/j/search_subjects?'headers={'Host':'movie.douban.com','Referer':'https://movie.douban.com/','User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/79.0.3945.130Safari/537.36','X-Requested-With':'XMLHttpRequest',}获取json方法 ,params里参数可以根据需求修改,此处URL由最上的URL加上params参数合成一个新的请求网址,然后再请求这个网址返回json数据defget_page():params={'type':'movie','tag':'豆瓣高分','page_limit':'50','page_start':'0',}url=hot_url+urlencode(params)try:response=requests.get(url,headers=headers)ifresponse.status_code==200:returnresponse.json()exceptrequests.ConnectionErrorase:print('Error',e.args)定义一个解析方法,遍历数据,获取我们想要的结果,我这里只获取了标题、评分、图片地址defps_page(json):ifjson:item=json.get('subjects')foritinitem:moive={}moive['title']=it.get('title')moive['rate']=it.get('rate')moive['cover']=it.get('cover')yieldmoive最后遍历打印结果if__name__=='__main__':json=get_page()res=ps_page(json)forreinres:print(re)