零基礎Python爬蟲實現(爬取最新電影排行)

來源:互聯網
上載者:User

標籤:tps   技術   movies   user   url   beautiful   roc   class   top   

提示:本學習來自Ehco前輩的文章, 經過實現得出的筆記。

目標網站
http://dianying.2345.com/top/
網站結構

要爬的部分,在ul標籤下(包括li標籤), 大致來說迭代li標籤的內容輸出即可。

遇到的問題?

代碼簡單, 但遇到的問題很多。

一: 編碼

這裡統一使用gbk了。

二: 庫

過程中缺少requests,bs4,idna,certifi,chardet,urllib3等庫, 需要手動添加庫, 我說一下我的方法

庫的添加方法:

例如:urllib3

百度urllib3,通過連結下載到本地

我下載第一個

解壓把urllib3檔案夾扔進python安裝目錄的Lib目錄下即可

三: 下載圖片連結

這個就有意思了, 之前我是這樣寫的

f.write(requests.get(img_url).content)

報錯

File "C:\Users\Shinelon\AppData\Local\Programs\Python\Python36\lib\requests\models.py", line 379, in prepare_url    raise MissingSchema(error)requests.exceptions.MissingSchema: Invalid URL ‘//imgwx5.2345.com/dypcimg/img/c/65/sup196183_223x310.jpg‘: No schema supplied. Perhaps you meant http:////imgwx5.2345.com/dypcimg/img/c/65/sup196183_223x310.jpg?Process finished with exit code 1

圖片是這樣的,也無法進行迭代輸出下載

沒辦法,後來自己自動給連結加上http:

img_url2 = ‘http:‘ + img_url            f.write(requests.get(img_url2).content)            print(img_url2)            f.close()

 然後就正常了。

附上代碼
import requestsimport bs4def get_html(url):    try:        r = requests.get(url, timeout=30)        r.raise_for_status        r.encoding = ‘gbk‘        return r.text    except:        return "someting wrong"def get_content(url):    html = get_html(url)    soup = bs4.BeautifulSoup(html, ‘lxml‘)    movieslist = soup.find(‘ul‘, class_=‘picList clearfix‘)    movies = movieslist.find_all(‘li‘)    for top in movies:        #爬取圖片src        img_url = top.find(‘img‘)[‘src‘]        #爬取影片name        name = top.find(‘span‘, class_=‘sTit‘).a.text        try:            #爬取影片發行日期            time = top.find(‘span‘, class_=‘sIntro‘).text        except:            time = "暫無發行日期"        #爬取電影角色主演        actors = top.find(‘p‘, class_=‘pActor‘)        actor = ‘‘        for act in actors.contents:            actor = actor + act.string + ‘ ‘        #爬取電影簡介        intro = top.find(‘p‘, class_=‘pTxt pIntroShow‘).text        print("片名:{}\t{}\n{}\n{} \n \n ".format(name, time, actor,intro))        #下載圖片到指定目錄        with open(‘/Users/Shinelon/Desktop/1212/‘+name+‘.png‘,‘wb+‘) as f:            img_url2 = ‘http:‘ + img_url            f.write(requests.get(img_url2).content)            print(img_url2)            f.close()def main():    url = ‘http://dianying.2345.com/top/‘    get_content(url)if __name__ == "__main__":    main()
結果

 

零基礎Python爬蟲實現(爬取最新電影排行)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.