最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python爬豆瓣電影實(shí)例

 更新時(shí)間:2018年02月23日 13:56:57   投稿:laozhang  
本篇文章給大家通過(guò)Python爬豆瓣電影實(shí)例對(duì)Python爬蟲(chóng)更深入的講解,有興趣的學(xué)習(xí)下。

文件結(jié)構(gòu)

html_downloader.py - 下載網(wǎng)頁(yè)html內(nèi)容

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import urllib2

class HtmlDownloader(object):

  def downlod(self, url):
    if url is None:
      return None
    response = urllib2.urlopen(url)
    if response.getcode() != 200:
      return None
    return response.read()

html_outputer.py - 輸出結(jié)果到文件中

#!/usr/bin/python
# -*- coding: UTF-8 -*-


class HtmlOutputer(object):

  def collect_data(self, movie_data):
    if movie_data is None:
      return
    fout = open('output.html', 'a+')
    for data in movie_data:
      print data['name'] + '|', data['rate'] + '|', data['actor'], '\n'
      fout.write('%s,' % data['name'].encode('utf-8'))
      fout.write('%s,' % data['rate'])
      fout.write('%s\n' % data['actor'].encode('utf-8'))
    fout.close()

html_parser.py: 解析器:解析html的dom樹(shù)

#!/usr/bin/python
# -*- coding: UTF-8 -*-
from bs4 import BeautifulSoup


class HtmlParser(object):

  def __init__(self):
    pass

  def parser_html(self, cnt):
    if cnt is None:
      return
    soup = BeautifulSoup(cnt, 'html.parser', from_encoding='utf-8')
    # movie_name, movie_desc, movie_rate =
    return self.get_movie_names(soup)

  def get_movie_names(self, soup):
    movie_data = []
    movie_all = soup.find('div', class_='article').find_next('table').find_next_sibling('div').find_next_sibling('div').find_all('table')
    count = 1
    for movie_one in movie_all:
      movie_data.append(self.get_movie_name(movie_one))
      # if count > 2:
      #   break
      count += 1
    return movie_data

  def get_movie_name(self, cnt):
    info = {}
    soup = BeautifulSoup(str(cnt), 'html.parser', from_encoding='utf-8')
    movie_one = soup.find('tr', class_='item').find_next('td').find_next_sibling('td').find('div', class_='pl2')
    info['name'] = movie_one.find('a').get_text().replace("\n", "").replace(" ", "")
    info['actor'] = movie_one.find('p', class_='pl').get_text().replace("\n", "").replace(" ", "")
    info['rate'] = movie_one.find('div', class_='star clearfix').find('span', class_='rating_nums').get_text()
    return info

spider_main.py - 主函數(shù)

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import html_parser, html_outputer, html_downloader


class SpiderMain(object):

  def __init__(self):
    self.parser = html_parser.HtmlParser()
    self.outputer = html_outputer.HtmlOutputer()
    self.downloader = html_downloader.HtmlDownloader()

  def craw(self, url):
    html_cnt = self.downloader.downlod(url)
    movie_data = self.parser.parser_html(html_cnt)
    self.outputer.collect_data(movie_data)


if __name__ == '__main__':
  url = 'https://movie.douban.com/tag/2017?start=100&type=T'
  spider = SpiderMain()
  spider.craw(url)

綜述

其實(shí)就是使用了urllib2和BeautifulSoup庫(kù),沒(méi)啥好說(shuō)的,你也可以直接改url,然后更改html_parser.py文件來(lái)滿足你自己的爬蟲(chóng)需求。當(dāng)前也可以更改html_outputer.py來(lái)定義保存格式,目前是csv。

相關(guān)文章

  • 使用 Python ssh 遠(yuǎn)程登陸服務(wù)器的最佳方案

    使用 Python ssh 遠(yuǎn)程登陸服務(wù)器的最佳方案

    這篇文章主要介紹了使用 Python ssh 遠(yuǎn)程登陸服務(wù)器的最佳方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Python讀取含url圖片鏈接的txt文檔方法小結(jié)

    Python讀取含url圖片鏈接的txt文檔方法小結(jié)

    這篇文章主要為大家詳細(xì)介紹了三種Python讀取含url圖片鏈接的txt文檔方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-04-04
  • python面向?qū)ο蠖嗑€程爬蟲(chóng)爬取搜狐頁(yè)面的實(shí)例代碼

    python面向?qū)ο蠖嗑€程爬蟲(chóng)爬取搜狐頁(yè)面的實(shí)例代碼

    這篇文章主要介紹了python面向?qū)ο蠖嗑€程爬蟲(chóng)爬取搜狐頁(yè)面的實(shí)例代碼,需要的朋友可以參考下
    2018-05-05
  • 簡(jiǎn)單了解python字符串前面加r,u的含義

    簡(jiǎn)單了解python字符串前面加r,u的含義

    這篇文章主要介紹了簡(jiǎn)單了解python字符串前面加r,u的含義,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • python+webdriver自動(dòng)化環(huán)境搭建步驟詳解

    python+webdriver自動(dòng)化環(huán)境搭建步驟詳解

    在本篇文章里小編給大家分享了關(guān)于python+webdriver自動(dòng)化環(huán)境搭建的詳細(xì)步驟以及注意點(diǎn),需要的朋友們參考下。
    2019-06-06
  • Python元組定義及集合的使用

    Python元組定義及集合的使用

    這篇文章主要介紹了Python元組定義及集合的使用,元組是Python中的一個(gè)內(nèi)置的數(shù)據(jù)結(jié)構(gòu),它是一個(gè)不可變的序列,所謂的不可變序列就是不可以進(jìn)行增刪改的操作
    2022-07-07
  • 報(bào)錯(cuò)No?module?named?numpy問(wèn)題的解決辦法

    報(bào)錯(cuò)No?module?named?numpy問(wèn)題的解決辦法

    之前安裝了Python,后來(lái)因?yàn)榫毩?xí)使用Python寫科學(xué)計(jì)算的東西,又安裝了Anaconda,但是安裝Anaconda之后又出現(xiàn)了一個(gè)問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于報(bào)錯(cuò)No?module?named?numpy問(wèn)題的解決辦法,需要的朋友可以參考下
    2022-08-08
  • Python中join()函數(shù)多種操作代碼實(shí)例

    Python中join()函數(shù)多種操作代碼實(shí)例

    這篇文章主要介紹了Python中join()函數(shù)多種操作代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • 基于Python和TFIDF實(shí)現(xiàn)提取文本中的關(guān)鍵詞

    基于Python和TFIDF實(shí)現(xiàn)提取文本中的關(guān)鍵詞

    TFIDF 的工作原理是按比例增加一個(gè)詞語(yǔ)在文檔中出現(xiàn)的次數(shù),但會(huì)被它所在的文檔數(shù)量抵消。本文將利用TFIDF實(shí)現(xiàn)提取文本中的關(guān)鍵詞,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧
    2022-04-04
  • 簡(jiǎn)單介紹Python中利用生成器實(shí)現(xiàn)的并發(fā)編程

    簡(jiǎn)單介紹Python中利用生成器實(shí)現(xiàn)的并發(fā)編程

    這篇文章主要介紹了簡(jiǎn)單介紹Python中利用生成器實(shí)現(xiàn)的并發(fā)編程,使用yield生成器函數(shù)進(jìn)行多進(jìn)程編程是Python學(xué)習(xí)進(jìn)階當(dāng)中的重要知識(shí),需要的朋友可以參考下
    2015-05-05

最新評(píng)論

五河县| 兖州市| 晋江市| 宁强县| 安达市| 全州县| 溧水县| 竹山县| 南川市| 商水县| 永修县| 安康市| 县级市| 乌什县| 镇巴县| 垣曲县| 涿鹿县| 伊宁县| 株洲县| 敖汉旗| 红安县| 肥乡县| 德格县| 阜宁县| 昌平区| 景洪市| 阿鲁科尔沁旗| 米脂县| 黄陵县| 利津县| 海兴县| 长岭县| 榆中县| 大洼县| 绍兴市| 岑巩县| 工布江达县| 农安县| 厦门市| 合山市| 北辰区|