第一次寫,python爬蟲圖片,操作excel。

来源:http://www.cnblogs.com/lry1/archive/2017/06/04/6941250.html
-Advertisement-
Play Games

第一次寫博客,其實老早就註冊博客園了,有寫博客的想法,就是沒有行動,總是學了忘,忘了丟,最後啥都沒有,電腦里零零散散,東找找,西看看,今天認識到寫博客的重要性。 最近閑著看了潭州教育的線上直播課程,頗受老師講課實用有感。只作為自己筆記學習,我們都知道學習一門編程都是先照抄,在創作。這裡完全按照老師講 ...


  第一次寫博客,其實老早就註冊博客園了,有寫博客的想法,就是沒有行動,總是學了忘,忘了丟,最後啥都沒有,電腦里零零散散,東找找,西看看,今天認識到寫博客的重要性。

  最近閑著看了潭州教育的線上直播課程,頗受老師講課實用有感。只作為自己筆記學習,我們都知道學習一門編程都是先照抄,在創作。這裡完全按照老師講解,照抄作為學習。

一、Python抓取豆瓣妹子圖。

  工具:python3.6.0;bs4.6.0;xlwt(1.2.0)需要版本對應,之前就安裝了bs4但是運行的時候提示版本不對應。可以線上升級:pip install update buautifulsoup4

  1.pip list,可以查看本地安裝。

  

  1.爬取豆瓣妹子圖,知道其地址,url = 'http://www.dbmeinv.com/?pager_offset=1'。

  2.查看網頁源代碼,F12,network,隨便找個左邊捕捉的網頁信息,找到User-agent,目的主要是為了模仿瀏覽器登錄,防止反爬蟲。

找到element元素。我們要的是img標簽,中的圖片信息,src連接下載地址。

 

按照老師寫所有代碼

 1 import urllib
 2 import urllib.request
 3 from bs4 import BeautifulSoup
 4 url = 'http://www.dbmeinv.com/?pager_offset=1'
 5 x=0
 6 #獲取源碼
 7 #自定義函數
 8 #User-Agent模擬瀏覽器進行訪問,反爬蟲
 9 def crawl(url):
10     headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3088.3 Safari/537.36'}
11     req=urllib.request.Request(url,headers=headers)#創建對象
12     page=urllib.request.urlopen(req,timeout=20)#設置超時
13     contents=page.read()#獲取源碼
14     #print (contents.decode())
15     soup = BeautifulSoup(contents,'html.parser')#html.parser主要是解析網頁的一種形式。
16     my_girl=soup.find_all('img')#找到所有img標簽
17     # 5.獲取圖片
18     for girl in my_girl:#遍歷
19         link=girl.get('src')#獲取src
20         print(link)
21         global x#全局變數
22         # 6.下載 urlretrieve
23         urllib.request.urlretrieve(link,'image\%s.jpg'%x)#下載,urlretrieve(需要下載的,路徑)
24         x+=1
25         print('正在下載第%s張'%x)
26 #7.多頁
27 for page in range(1,10):#range本身自動生成整數序列,爬取多頁圖片。
28     #page+=1
29     url='http://www.dbmeinv.com/?pager_offset={}'.format(page)#
30     #url = 'http://www.dbmeinv.com/?pager_offset=%d' % page
31     crawl(url)
32 
33 print('圖片下載完畢')

最終運行結果, 圖片保存在image文件夾下。

 

二、抓取大眾點評,導入excel。趙本宣言老師源碼。

import requests
from bs4 import BeautifulSoup
import xlwt
def get_content(url,headers=None,proxy=None):
    html=requests.get(url,headers=headers).content
    return html

def get_url(html):
    soup = BeautifulSoup(html,'html.parser')
    shop_url_list=soup.find_all('div',class_='tit')#class在Python是關鍵字,
    # 列表推導式
    return [i.find('a')['href'] for i in shop_url_list]

#商品的詳細信息,名字,評論,人均
def get_detail_content(html):
    soup=BeautifulSoup(html,'html.parser')
    price=soup.find('span',id='avgPriceTitle').text
    evaluation=soup.find('span',id='comment_score').find_all('span',class_='item')#find_all是有多個,這裡三個
    #for i in evaluation:
     #   print(i.text)
    the_star=soup.find('div',class_='brief-info').find('span')['title']
    title=soup.find('div',class_='breadcrumb').find('span').text
    comments=soup.find('span',id='reviewCount').text
    address=soup.find('span',itemprop='street-address').text
    print(u'店名:'+title)
    for i in evaluation:
        print(i.text)
    print(price)
    print(u'評論數量:'+comments)
    print(u'地址:'+address.strip())
    print(u'評價星級:'+the_star)
    print('================')
    return (title,evaluation[0].text,evaluation[1].text,evaluation[2].text,price,comments,address,the_star)

if __name__=='__main__':
    items=[]
    start_url='https://www.dianping.com/search/category/344/10/'
    base_url='https://www.dianping.com'
    headers={
        'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3088.3 Safari/537.36',
        'Cookie':'_hc.v=461407bd-5a08-f3fa-742e-681a434748bf.1496365678; __utma=1.1522471392.1496365678.1496365678.1496365678.1; __utmc=1; __utmz=1.1496365678.1.1.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; PHOENIX_ID=0a0102b7-15c6659b548-25fc89; s_ViewType=10; JSESSIONID=E815A43E028078AFA73AF08D9C9E4A15; aburl=1; cy=344; cye=changsha; __mta=147134984.1496365814252.1496383356849.1496383925586.4'
    }

    start_html=get_content(start_url)
    #一頁
    # url_list=get_url(start_html)
    #多頁
    url_list = [base_url + url for url in get_url(start_html)]
    for i in url_list:
        detail_html=get_content(i,headers=headers)
        item=get_detail_content(detail_html)
        items.append(item)

    #寫excel,txt差別,Excel:xlwg
    newTable='DZDP.xls'
    wb=xlwt.Workbook(encoding='utf-8')
    ws=wb.add_sheet('test1')
    headData=['商戶名字','口味評分','環境評分','服務評分','人均價格','評論數量','地址','商戶評價']
    for colnum in range(0,8):
        ws.write(0,colnum,headData[colnum],xlwt.easyxf('font:bold on'))
    index=1
    lens=len(items)
    for j in range(0,lens):
        for i in range(0,8):
            ws.write(index,i,items[j][i])
        index +=1
    wb.save(newTable)

很喜歡鎖女神老師,忘老師的用心講解,收穫很多,雖然有些地方還不是很懂,但通過不斷的學習,養成寫博客的習慣,相信會快速提升。

 

 

 

 

  

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 官方教程 http://www.kuitao8.com/demo/20140224/1/bootstrap-multiselect-master/index.html 使用方法: 第一步引用樣式以及相關JS 第二步 構造Selection(註意 需要設置multiple屬性,否則依然是單選模式,mu ...
  • 因為參加一個小項目,需要對繼電器進行串口控制,所以這兩天學習了基本的串口編程。同事那邊有JAVA的串口通信包,不過是從網上下載的,比較零亂,難以準確掌握串口通信的流程和內含。因此,個人通過學習網上大牛的方法,利用C#實現了基本的串口通信編程。下麵對學習成果進行總結歸納,希望對大家有所幫助。 一、串口 ...
  • 如果在一個類中定義了虛屬性或者虛方法,又在構造函數中訪問了這個虛屬性或方法,那麼很可能會埋下一個安全隱患。 ...
  • 鏈表的相關知識整理 什麼是鏈表 鏈表是一種物理存儲單元上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。鏈表由一系列結點(鏈表中每一個元素稱為結點)組成,結點可以在運行時動態生成。每個結點包括兩個部分:一個是存儲數據元素的數據域,另一個是存儲下一個結點地址的指針域。 鏈 ...
  • 背景:二次開發 用的asp.net 三層 伺服器控制項 今天在開發的時候 發現這個系統裡面 很多東西都封裝了 同時也發現了一個問題 Dopostback 這個方法 怎麼使用的 因為我發現 一些html 元素 既沒有給它綁定交互的方法 又不是伺服器控制項 偏偏你點擊了 卻可以交互數據 仔細研究了下 決定於 ...
  • PropertyGrid是一個很強大的控制項,使用該控制項做屬性設置面板的一個好處就是你只需要專註於代碼而無需關註UI的呈現,PropertyGrid會預設根據變數類型選擇合適的控制項顯示。但是這也帶來了一個問題,就是控制項的使用變得不是特別靈活,主要表現在你無法根據你的需求很好的選擇控制項,比如當你需要用S... ...
  • 1.分散式系統的架構體系 基於對象的體系機構 面向服務的架構(SOA) REST風格的架構 微服務架構(MSA) 容器技術 Serverless架構 2.分散式消息服務 Apache ActiveMQ RabbitMQ RocketMQ Apache Kafka 3.分散式計算 MapReduce ...
  • 學校選課系統!!! ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...