導航:首頁 > 電影資訊 > 如何爬取豆瓣電影上的標題和鏈接

如何爬取豆瓣電影上的標題和鏈接

發布時間:2022-08-30 08:34:04

1. 如何寫爬蟲程序爬取豆瓣網或者新浪微博里的內容

用前嗅的ForeSpider數據採集軟體可以採集,我之前采過豆瓣的影評,可以設置各種過濾規律,比如我只要豆瓣評分6.0以上的電影,就可以精確的過濾。
可以下載一個免費版的試試,沒有功能和使用時長限制。
軟體內部集成了數據挖掘功能,可以通過一個採集模板,精準挖掘全網的內容。在數據採集入庫的同時,可以完成分類、統計、自然語言處理等諸多功能。
軟體與ForeAna數據分析系統對接,可以實現強大的數據分析功能,對數據進行深度的大數據分析。
ForeSpider除了強大的可視化採集之外,還自帶一套爬蟲腳本語言,可以採集任何公開的數據。

2. 如何抓取豆瓣上的電影

在豆瓣電影搜索框里輸上名字,點搜索以後出來的頁面右側會出來「豆瓣電影還沒有,我來添加」,然後就填名字就行了 沒有imbd編號也沒事,填完了以後會有審核,幾天之後會豆郵通知你是否添加成功

3. python怎麼抓取豆瓣電影url

#!/usr/bin/env python2.7# encoding=utf-8"""
爬取豆瓣電影TOP250 - 完整示例代碼
"""import codecsimport requestsfrom bs4 import BeautifulSoup

DOWNLOAD_URL = 'httn.com/top250/'def download_page(url):
return requests.get(url, headers={ 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36'
}).contentdef parse_html(html):
soup = BeautifulSoup(html)
movie_list_soup = soup.find('ol', attrs={'class': 'grid_view'})

movie_name_list = [] for movie_li in movie_list_soup.find_all('li'):
detail = movie_li.find('div', attrs={'class': 'hd'})
movie_name = detail.find('span', attrs={'class': 'title'}).getText()

movie_name_list.append(movie_name)

next_page = soup.find('span', attrs={'class': 'next'}).find('a') if next_page: return movie_name_list, DOWNLOAD_URL + next_page['href'] return movie_name_list, Nonedef main():
url = DOWNLOAD_URL with codecs.open('movies', 'wb', encoding='utf-8') as fp: while url:
html = download_page(url)
movies, url = parse_html(html)
fp.write(u'{movies}\n'.format(movies='\n'.join(movies)))if __name__ == '__main__':
main()0414243444546474849505152

簡單說明下,在目錄下會生成一個文檔存放電影名。python2

4. 如何快速提取網頁上指定的標題鏈接地址

不需要什麼軟體的。你可以在網站要提取內容的頁面,點擊文件另存為HTML模式,再用WOED或者EXLE打開就可以了,這樣你打開的網頁上所有文字圖片還有連接就全部都可以提取到文檔里,還自動帶超鏈接的。注意操作過程中需要有很多選項要注意,不然提取不成功。

5. 怎樣用python爬取豆瓣電影

推薦you-get工具包,pip可以直接下載安裝

6. 如何抓取豆瓣的影視評論

這個問題其實是比較簡單的,就是用信息採集軟體來做!
信息採集軟體可以實時的採集網路上的信息,無論是動態。還是靜態的,數據全部保存到本地資料庫,進一步的還可以自動發布!整個過程全部可以實現自動化!採集的對象不僅僅是文本,還可以是圖片,MP3、電影、軟體等。這一切都是現在網路技術發展的成果!
國內有家技術不錯的,叫樂思軟體(knowlesys),可以去找著看看資料,下個軟體試試!

7. 豆瓣電影250怎麼爬取title

用的是什麼語言?一般通用的可以用正則表達式解析,不過會麻煩一點。

如果用nodejs,可以用cheerio,類似jquery的用法。

8. 你是如何找到一部想看的電影的資源的

這里有一個訣竅,當你搜索電影資源的時候,打開鏈接已經失效了。以為網路雲刪除資源了,其實不然,網路雲並沒有刪除,只是隱藏了。你只要把滑鼠放在鏈接標題上,右擊出現「審查元素」,然後就可以找到被隱藏的資源地址。

9. 怎樣避開豆瓣對爬蟲的封鎖,從而抓取豆瓣上電影內容

用前嗅的ForeSpider數據採集軟體可以採集,我之前采過豆瓣的影評,可以設置各種過濾規律,比如我只要豆瓣評分6.0以上的電影,就可以精確的過濾。ForeSpider可以智能模擬瀏覽器和用戶行為,突破反爬蟲限制。可以設置代理IP,並且可以自動過濾優質IP代理,提高使用代理的速度。
對於一些高難度的網站,反爬蟲措施比較多,可以使用ForeSpider內部自帶的爬蟲腳本語言系統,簡單幾行代碼就可以採集到高難度的網站。
可以去下載免費版,免費版不限制採集功能。有詳細的操作手冊可以學習。如果自己不想學習,可以讓前嗅進行配置。
而且客服可以教你怎樣用,有問題出錯了客服會遠程操作,非常好的服務態度。

10. 如何用python爬取豆瓣讀書的數據

這兩天爬了豆瓣讀書的十萬條左右的書目信息,用時將近一天,現在趁著這個空閑把代碼總結一下,還是菜鳥,都是用的最簡單最笨的方法,還請路過的大神不吝賜教。
第一步,先看一下我們需要的庫:

import requests #用來請求網頁
from bs4 import BeautifulSoup #解析網頁
import time #設置延時時間,防止爬取過於頻繁被封IP號
import re #正則表達式庫
import pymysql #由於爬取的數據太多,我們要把他存入MySQL資料庫中,這個庫用於連接資料庫
import random #這個庫里用到了產生隨機數的randint函數,和上面的time搭配,使爬取間隔時間隨機

這個是豆瓣的網址:x-sorttags-all
我們要從這里獲取所有分類的標簽鏈接,進一步去爬取裡面的信息,代碼先貼上來:

import requests
from bs4 import BeautifulSoup #導入庫

url="httom/tag/?icn=index-nav"
wb_data=requests.get(url) #請求網址
soup=BeautifulSoup(wb_data.text,"lxml") #解析網頁信息
tags=soup.select("#content > div > div.article > div > div > table > tbody > tr > td > a")
#根據CSS路徑查找標簽信息,CSS路徑獲取方法,右鍵-檢查- selector,tags返回的是一個列表
for tag in tags:
tag=tag.get_text() #將列表中的每一個標簽信息提取出來
helf="hom/tag/"
#觀察一下豆瓣的網址,基本都是這部分加上標簽信息,所以我們要組裝網址,用於爬取標簽詳情頁
url=helf+str(tag)
print(url) #網址組裝完畢,輸出

以上我們便爬取了所有標簽下的網址,我們將這個文件命名為channel,並在channel中創建一個channel字元串,放上我們所有爬取的網址信息,等下爬取詳情頁的時候直接從這里提取鏈接就好了,如下:

channel='''
tag/程序
'''

現在,我們開始第二個程序。


QQ圖片20160915233329.png


標簽頁下每一個圖片的信息基本都是這樣的,我們可以直接從這里提取到標題,作者,出版社,出版時間,價格,評價人數,以及評分等信息(有些外國作品還會有譯者信息),提取方法與提取標簽類似,也是根據CSS路徑提取。
我們先用一個網址來實驗爬取:

url="htt/tag/科技"
wb_data = requests.get(url)
soup = BeautifulSoup(wb_data.text.encode("utf-8"), "lxml")
tag=url.split("?")[0].split("/")[-1] #從鏈接裡面提取標簽信息,方便存儲
detils=soup.select("#subject_list > ul > li > div.info > div.pub") #抓取作者,出版社信息,稍後我們用spite()函數再將他們分離出來
scors=soup.select("#subject_list > ul > li > div.info > div.star.clearfix > span.rating_nums") #抓取評分信息
persons=soup.select("#subject_list > ul > li > div.info > div.star.clearfix > span.pl") #評價人數
titles=soup.select("#subject_list > ul > li > div.info > h2 > a") #書名
#以上抓取的都是我們需要的html語言標簽信息,我們還需要將他們一一分離出來
for detil,scor,person,title in zip(detils,scors,persons,titles):
#用一個zip()函數實現一次遍歷
#因為一些標簽中有譯者信息,一些標簽中沒有,為避免錯誤,所以我們要用一個try來把他們分開執行
try:
author=detil.get_text().split("/",4)[0].split()[0] #這是含有譯者信息的提取辦法,根據「/」 把標簽分為五部分,然後依次提取出來
yizhe= detil.get_text().split("/", 4)[1]
publish=detil.get_text().split("/", 4)[2]
time=detil.get_text().split("/", 4)[3].split()[0].split("-")[0] #時間我們只提取了出版年份
price=ceshi_priceone(detil) #因為價格的單位不統一,我們用一個函數把他們換算為「元」
scoe=scor.get_text() if True else "" #有些書目是沒有評分的,為避免錯誤,我們把沒有評分的信息設置為空
person=ceshi_person(person) #有些書目的評價人數顯示少於十人,爬取過程中會出現錯誤,用一個函數來處理
title=title.get_text().split()[0]
#當沒有譯者信息時,會顯示IndexError,我們分開處理
except IndexError:
try:
author=detil.get_text().split("/", 3)[0].split()[0]
yizhe="" #將detil信息劃分為4部分提取,譯者信息直接設置為空,其他與上面一樣
publish=detil.get_text().split("/", 3)[1]
time=detil.get_text().split("/", 3)[2].split()[0].split("-")[0]
price=ceshi_pricetwo(detil)
scoe=scor.get_text() if True else ""
person=ceshi_person(person)
title=title.get_text().split()[0]
except (IndexError,TypeError):
continue
#出現其他錯誤信息,忽略,繼續執行(有些書目信息下會沒有出版社或者出版年份,但是數量很少,不影響我們大規模爬取,所以直接忽略)
except TypeError:
continue

#提取評價人數的函數,如果評價人數少於十人,按十人處理
def ceshi_person(person):
try:
person = int(person.get_text().split()[0][1:len(person.get_text().split()[0]) - 4])
except ValueError:
person = int(10)
return person

#分情況提取價格的函數,用正則表達式找到含有特殊字元的信息,並換算為「元」
def ceshi_priceone(price):
price = detil.get_text().split("/", 4)[4].split()
if re.match("USD", price[0]):
price = float(price[1]) * 6
elif re.match("CNY", price[0]):
price = price[1]
elif re.match("A$", price[0]):
price = float(price[1:len(price)]) * 6
else:
price = price[0]
return price
def ceshi_pricetwo(price):
price = detil.get_text().split("/", 3)[3].split()
if re.match("USD", price[0]):
price = float(price[1]) * 6
elif re.match("CNY", price[0]):
price = price[1]
elif re.match("A$", price[0]):
price = float(price[1:len(price)]) * 6
else:
price = price[0]
return price

實驗成功後,我們就可以爬取數據並導入到資料庫中了,以下為全部源碼,特殊情況會用注釋一一說明。

import requests
from bs4 import BeautifulSoup
import time
import re
import pymysql
from channel import channel #這是我們第一個程序爬取的鏈接信息
import random

def ceshi_person(person):
try:
person = int(person.get_text().split()[0][1:len(person.get_text().split()[0]) - 4])
except ValueError:
person = int(10)
return person

def ceshi_priceone(price):
price = detil.get_text().split("/", 4)[4].split()
if re.match("USD", price[0]):
price = float(price[1]) * 6
elif re.match("CNY", price[0]):
price = price[1]
elif re.match("A$", price[0]):
price = float(price[1:len(price)]) * 6
else:
price = price[0]
return price

def ceshi_pricetwo(price):
price = detil.get_text().split("/", 3)[3].split()
if re.match("USD", price[0]):
price = float(price[1]) * 6
elif re.match("CNY", price[0]):
price = price[1]
elif re.match("A$", price[0]):
price = float(price[1:len(price)]) * 6
else:
price = price[0]
return price


#這是上面的那個測試函數,我們把它放在主函數中
def mains(url):
wb_data = requests.get(url)
soup = BeautifulSoup(wb_data.text.encode("utf-8"), "lxml")
tag=url.split("?")[0].split("/")[-1]
detils=soup.select("#subject_list > ul > li > div.info > div.pub")
scors=soup.select("#subject_list > ul > li > div.info > div.star.clearfix > span.rating_nums")
persons=soup.select("#subject_list > ul > li > div.info > div.star.clearfix > span.pl")
titles=soup.select("#subject_list > ul > li > div.info > h2 > a")
for detil,scor,person,title in zip(detils,scors,persons,titles):
l = [] #建一個列表,用於存放數據
try:
author=detil.get_text().split("/",4)[0].split()[0]
yizhe= detil.get_text().split("/", 4)[1]
publish=detil.get_text().split("/", 4)[2]
time=detil.get_text().split("/", 4)[3].split()[0].split("-")[0]
price=ceshi_priceone(detil)
scoe=scor.get_text() if True else ""
person=ceshi_person(person)
title=title.get_text().split()[0]
except IndexError:
try:
author=detil.get_text().split("/", 3)[0].split()[0]
yizhe=""
publish=detil.get_text().split("/", 3)[1]
time=detil.get_text().split("/", 3)[2].split()[0].split("-")[0]
price=ceshi_pricetwo(detil)
scoe=scor.get_text() if True else ""
person=ceshi_person(person)
title=title.get_text().split()[0]
except (IndexError,TypeError):
continue

except TypeError:
continue
l.append([title,scoe,author,price,time,publish,person,yizhe,tag])
#將爬取的數據依次填入列表中


sql="INSERT INTO allbooks values(%s,%s,%s,%s,%s,%s,%s,%s,%s)" #這是一條sql插入語句
cur.executemany(sql,l) #執行sql語句,並用executemary()函數批量插入資料庫中
conn.commit()

#主函數到此結束


# 將Python連接到MySQL中的python資料庫中
conn = pymysql.connect( user="root",password="123123",database="python",charset='utf8')
cur = conn.cursor()

cur.execute('DROP TABLE IF EXISTS allbooks') #如果資料庫中有allbooks的資料庫則刪除
sql = """CREATE TABLE allbooks(
title CHAR(255) NOT NULL,
scor CHAR(255),
author CHAR(255),
price CHAR(255),
time CHAR(255),
publish CHAR(255),
person CHAR(255),
yizhe CHAR(255),
tag CHAR(255)
)"""
cur.execute(sql) #執行sql語句,新建一個allbooks的資料庫


start = time.clock() #設置一個時鍾,這樣我們就能知道我們爬取了多長時間了
for urls in channel.split():
urlss=[urls+"?start={}&type=T".format(str(i)) for i in range(0,980,20)] #從channel中提取url信息,並組裝成每一頁的鏈接
for url in urlss:
mains(url) #執行主函數,開始爬取
print(url) #輸出要爬取的鏈接,這樣我們就能知道爬到哪了,發生錯誤也好處理
time.sleep(int(format(random.randint(0,9)))) #設置一個隨機數時間,每爬一個網頁可以隨機的停一段時間,防止IP被封
end = time.clock()
print('Time Usage:', end - start) #爬取結束,輸出爬取時間
count = cur.execute('select * from allbooks')
print('has %s record' % count) #輸出爬取的總數目條數

# 釋放數據連接
if cur:
cur.close()
if conn:
conn.close()

這樣,一個程序就算完成了,豆瓣的書目信息就一條條地寫進了我們的資料庫中,當然,在爬取的過程中,也遇到了很多問題,比如標題返回的信息拆分後中會有空格,寫入資料庫中會出現錯誤,所以只截取了標題的第一部分,因而導致資料庫中的一些書名不完整,過往的大神如果有什麼辦法,還請指教一二。
等待爬取的過程是漫長而又欣喜的,看著電腦上一條條信息被刷出來,成就感就不知不覺湧上心頭;然而如果你吃飯時它在爬,你上廁所時它在爬,你都已經爬了個山回來了它還在爬時,便會有點崩潰了,擔心電腦隨時都會壞掉(還是窮學生換不起啊啊啊啊~)
所以,還是要好好學學設置斷點,多線程,以及正則,路漫漫其修遠兮,吾將上下而求索~共勉~

閱讀全文

與如何爬取豆瓣電影上的標題和鏈接相關的資料

熱點內容
30分鍾微電影主演出場費多少 瀏覽:719
有啥好看的重生電影 瀏覽:625
有哪些愛情感人的電影 瀏覽:855
李鍾碩的犯罪電影有哪些 瀏覽:554
免費叢林迷失z城電影大全 瀏覽:808
高三學生免費電影 瀏覽:537
分離四肢電影叫什麼名字 瀏覽:957
手機愛奇藝里的電影如何存進u盤 瀏覽:168
現代戰爭火力對決是什麼電影 瀏覽:628
有哪些最值得看的外國電影 瀏覽:703
2015年吳京的電影有哪些 瀏覽:780
好看的國產電影古代 瀏覽:698
好看的2016動漫電影 瀏覽:793
北京電影學院所有專業學費多少 瀏覽:101
有哪些黃的外國電影排行榜 瀏覽:577
2002電影無主之城有哪些歌曲 瀏覽:509
電影如何設計腳本 瀏覽:414
百度雲盤上如何下電影網站 瀏覽:948
異形系列電影都有哪些 瀏覽:150
十二歲孩子看什麼電影 瀏覽:441