資源簡介
豆瓣電影數據集12萬+用戶影評40萬+爬蟲程序(兩個csv,一個db數據庫)
最近在學習爬蟲,辛辛苦苦爬了幾天,分享給大家。。可以用來做推薦系統
覺得好的朋友幫忙評論下打個5星~
可以看下這篇文章 https://blog.csdn.net/qq_37717661/article/details/81458779
代碼片段和文件信息
import?logging
import?random
import?string
import?requests
import?time
from?collections?import?deque
from?urllib?import?parse
import?pandas?as?pd
import?re
from?settings?import?User_AgentsAgent_IP
class?DoubanSpider(object):
????“““豆瓣爬蟲“““
????def?__init__(selfformTypecountrygenres):
????????#?基本的URL
????????self.base_url?=?‘https://movie.douban.com/j/new_search_subjects?sort=T&range=010&‘
????????self.full_url?=?self.base_url?+?‘{query_params}‘
????????#?從User-Agents中選擇一個User-Agent
????????self.headers?=?{‘User-Agent‘:random.choice(User_Agents)}??
????????self.proxies?=?{‘http‘:random.choice(Agent_IP)}?
????????#?可選參數?
????????self.form_tag?=?form??#?影視形式
????????self.type_tag?=?Type??#?類型
????????self.countries_tag?=??country?#?地區
????????self.genres_tag?=?genres?#特色
????????#默認參數
????????self.sort?=?‘T‘??#?排序方式默認是T表示熱度
????????self.range?=?0?10??#?評分范圍
????def?encode_query_data(self):
????????“““對輸入信息進行編碼處理“““
????????
????????if?not?(self.form_tag?and?self.type_tag?and?self.countries_tag?and?self.genres_tag):
????????????all_tags?=?‘‘
????????else:
????????????all_tags?=?[self.form_tag?self.type_tag?self.countries_tag?self.genres_tag]
????????query_param?=?{
????????????‘sort‘:?self.sort
????????????‘range‘:?self.range
????????????‘tags‘:?all_tags
????????}
????????#?string.printable:表示ASCII字符就不用編碼了
????????query_params?=?parse.urlencode(query_param?safe=string.printable)
????????#?去除查詢參數中無效的字符
????????invalid_chars?=?[‘(‘?‘)‘?‘[‘?‘]‘?‘+‘?‘\‘‘]
????????for?char?in?invalid_chars:
????????????if?char?in?query_params:
????????????????query_params?=?query_params.replace(char?‘‘)
????????#?把查詢參數和base_url組合起來形成完整的url
????????self.full_url?=?self.full_url.format(query_params=query_params)?+?‘&start={start}‘
????????‘‘‘
????????query_params?=?‘tags=‘+str(self.form_tag)+‘‘+str(self.type_tag)+‘‘+str(self.countries_tag)+‘‘+\
????????????str(self.genres_tag)
????????self.full_url?=?self.full_url.format(query_params=query_params)?+?‘&start={start}‘
????????‘‘‘
????def?download_movies(self?offset):
????????“““下載電影信息
????????:param?offset:?控制一次請求的影視數量
????????:return?resp:請求得到的響應體“““
????????full_url?=?self.full_url.format(start=offset)
????????print(full_url)
????????resp?=?None
????????try:
????????????#方法1.USER_AGENT配置仿造瀏覽器訪問?headers
????????????#方法2.偽造Cookie,解封豆瓣IP?cookies?=?jar
????????????#jar?=?requests.cookies.RequestsCookieJar()??
????????????#jar.set(‘bid‘?‘ehjk9OLdwha‘?domain=‘.douban.com‘?path=‘/‘)
????????????#jar.set(‘11‘?‘25678‘?domain=‘.douban.com‘?path=‘/‘)
????????????#方法3.使用代理IP?proxies
????????????resp=requests.get(full_urlheaders=self.headersproxies=self.proxies)
????????except?Exception?as?e:
????????????print(resp)
????????????logging.error(e)
????????return?resp
????def?get_movies(self?resp):
????????“““獲取電影信息
????????:param?resp:?響應體
????????:return?movies:爬取到的電影信息“““
????????if?resp:
????????????if?resp.status_code?==?200:
????????????????#?獲取響應文件中的電影數據
????????????????movies?=?dict(resp.
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????7373??2018-08-07?23:25??douban.py
?????目錄???????????0??2018-08-21?16:33??__MACOSX\
?????文件?????????210??2018-08-07?23:25??__MACOSX\._douban.py
?????文件????12239589??2018-08-10?00:10??user.csv
?????文件????78450688??2018-08-06?16:22??douban.db
?????文件?????????814??2018-08-06?16:22??__MACOSX\._douban.db
?????文件????11426666??2018-08-08?20:38??movie.csv
- 上一篇:計算機網絡_第5版_中文版_嚴偉_潘愛民譯
- 下一篇:unity常用的800個腳本
評論
共有 條評論