專案之爬蟲入門(豆瓣TOP250)
本文的程式碼是基於Python的爬蟲練手,爬取豆瓣電影top250的資訊
配套視訊:爬蟲視訊
先貼一張爬蟲結果圖:
預備知識
- 瀏覽器訪問網址的步驟是:1)使用者傳送一個url連結訪問請求;2)伺服器根據請求返回特定的響應;3)瀏覽器解析返回的響應(HTML),獲取目標資訊等展示出來。
- 爬蟲的目的就是在3)步時,不全部解析出來,而是隻取自己需要的部分儲存下來。所以爬蟲的整體流程分3步
- 傳送url,獲取響應資料(html)
- 解析資料
- 儲存結果
1. 傳送url,獲取響應
使用urllib包
參考:urllib講解視訊
# 得到一個url的指定內容
def askURL(url):
# 使用者代理,模擬瀏覽器頭部資訊,向豆瓣伺服器發訊息
head = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"
}
# 傳送url請求
request = urllib.request.Request(url, headers=head)
html = ""
try:
# 接受響應
response= urllib.request.urlopen(request)
html = response.read().decode("utf-8")
# print(html)
except urllib.error.URLError as e:
if hasattr(e, "code"):
print(e.code)
if hasattr(e, "reason"):
print(e.reason)
return html
2. 解析資料
使用BeautifulSoup包
BeautifulSoup講解視訊
正規表示式、正則提取
# 正規表示式用來獲得爬蟲指定資訊
findLink = re.compile(r'<a href="(.*?)">') # 找連結的pattern
findImg = re.compile(r'<img.*src="(.*?)"', re.S)
findTitle = re.compile(r'<span class="title">(.*)</span>')
findRating = re.compile(r'<span class="rating_num" property="v:average">(.*)</span>') # 評分指標
findJudge = re.compile(r'<span>(\d*)人評價</span>') # 評價
findInq = re.compile(r'<span class="inq">(.*?)</span>')
findBd = re.compile(r'<p class="">(.*?)</p>', re.S)
# 根據url,獲得指定資訊
def getData(baseurl):
datalist = []
for i in range(0, 1):
url = baseurl + str(i*25)
html = askURL(url) # 儲存html原始碼
# 2.解析資料
soup = BeautifulSoup(html, "html.parser")
for item in soup.find_all('div', class_="item"):
# print(item)
data = []
item = str(item)
# 使用正規表示式解析資料
link = re.findall(findLink, item)[0]
data.append(link)
imgSrc = re.findall(findImg, item)[0]
data.append(imgSrc)
titles = re.findall(findTitle, item)
if(len(titles) == 2):
ctitile = titles[0]
otitile = titles[1]
data.append(ctitile)
data.append(otitile)
else:
ctitile = titles[0]
otitile = ""
data.append(ctitile)
data.append(otitile)
rating = re.findall(findRating, item)[0]
data.append(rating)
judgeNum = re.findall(findJudge, item)[0]
data.append(judgeNum)
inq = re.findall(findInq, item)[0]
if len(inq) != 0:
inq = inq.replace("。", "")
data.append(inq)
else:
data.append(" ")
bd = re.findall(findBd, item)[0]
bd = re.sub('<br(\s+)?/>(\s+)?', " ", bd)
bd = re.sub('/', "", bd)
data.append(bd.strip())
datalist.append(data)
return datalist
3. 儲存資料
兩種格式,一種xml格式,使用xlwt包;一種db格式,使用sqlite3包
xml視訊講解、sqlite視訊講解
# 儲存成xml格式
def saveData(datalist, savepath):
print("save...")
# 建立一個xml物件
book = xlwt.Workbook(encoding="utf-8", style_compression=0)
# 插入頁籤
sheet = book.add_sheet("豆瓣top250")
cols = ("電影詳情連結", "圖片連結", "影片中文名", "外國名", "評分", "評價數","概況","相關資訊")
# 寫入內容
for i in range(8):
sheet.write(0, i, cols[i])
for i in range(len(datalist)):
print("第{0}條".format(i+1))
for j in range(0, 8):
sheet.write(i+1, j, datalist[i][j])
book.save(savepath)
# 儲存成資料庫(db)格式
def saveDataDB(datalist, savepathdb):
# 初始化資料庫,建立表
init_db(savepathdb)
# 連線資料庫
conn = sqlite3.connect(savepathdb)
# 建立遊標
c = conn.cursor()
# 編寫sql語句
sql = ""
for data in datalist:
for idx in range(len(data)):
if idx is 4 or idx is 5:
continue
data[idx] = '"' + data[idx] + '"'
sql = '''
insert into movie250 (info_link, pic_link, cname, ename, score, rated, instroduction, infor)
values(%s)'''%",".join(data)
print(sql)
# 執行sql語句
c.execute(sql)
# 提交資料庫操作
conn.commit()
# 關閉資料庫
c.close()
# 初始化資料庫
def init_db(savepathdb):
conn = sqlite3.connect(savepathdb)
c = conn.cursor()
sql = '''
create table movie250
(
id integer primary key autoincrement,
info_link text,
pic_link text,
cname varchar,
ename varchar,
score numeric,
rated numeric,
instroduction text,
infor text
)
'''
c.execute(sql)
conn.commit()
conn.close()
有需要程式碼的小夥伴可以留下郵箱~
相關文章
- scrapy入門:豆瓣電影top250爬取
- 爬蟲教程——用Scrapy爬取豆瓣TOP250爬蟲
- python——豆瓣top250爬取Python
- scrapy入門教程()部署爬蟲專案爬蟲
- 豆瓣top250資料爬取
- 豆瓣電影TOP250爬蟲及視覺化分析筆記爬蟲視覺化筆記
- Scrapy入門-第一個爬蟲專案爬蟲
- Java爬蟲入門(一)——專案介紹Java爬蟲
- 【python爬蟲案例】利用python爬取豆瓣電影TOP250評分排行資料!Python爬蟲
- 爬蟲豆瓣美女爬蟲
- 06、豆瓣爬蟲爬蟲
- 使用python爬取豆瓣電影TOP250Python
- Python爬取分析豆瓣電影Top250Python
- 手把手教你網路爬蟲(爬取豆瓣電影top250,附帶原始碼)爬蟲原始碼
- Python爬蟲入門學習實戰專案(一)Python爬蟲
- 【python爬蟲案例】利用python爬取豆瓣讀書評分TOP250排行資料Python爬蟲
- Java 爬蟲專案實戰之爬蟲簡介Java爬蟲
- 不踩坑的Python爬蟲:Python爬蟲開發與專案實戰,從爬蟲入門 PythonPython爬蟲
- python爬蟲 之 BeautifulSoup庫入門Python爬蟲
- 爬蟲入門爬蟲
- 爬取豆瓣電影Top250和資料分析
- python入門之爬蟲工具有哪些?Python爬蟲
- 爬蟲專案爬蟲
- Python爬蟲入門Python爬蟲
- 正規表示式_爬取豆瓣電影排行Top250
- 【爬蟲】爬蟲專案推薦 / 思路爬蟲
- (python)爬蟲----八個專案帶你進入爬蟲的世界Python爬蟲
- Python爬蟲進階之JS逆向入門Python爬蟲JS
- python爬蟲學習筆記 4.2 (Scrapy入門案例(建立專案))Python爬蟲筆記
- 爬蟲小專案爬蟲
- 爬蟲專案部署爬蟲
- 【爬蟲】python爬蟲從入門到放棄爬蟲Python
- python-爬蟲入門Python爬蟲
- 爬蟲新手入門實戰專案(爬取筆趣閣小說並下載)爬蟲
- 爬蟲不得不學之 JavaScript 入門篇爬蟲JavaScript
- 爬蟲(1) - 爬蟲基礎入門理論篇爬蟲
- Day1--豆瓣圖書爬蟲爬蟲
- 爬蟲專案總結爬蟲