Python實現簡單的網頁抓取


現在開源的網頁抓取程序有很多,各種語言應有盡有。

這里分享一下Python從零開始的網頁抓取過程

第一步:安裝Python

點擊下載適合的版本https://www.python.org/

我這里選擇安裝的是Python2.7.11

第二步:安裝PythonIDE可以任意選擇,這里安轉的是PyCharm

點擊下載地址:http://www.jetbrains.com/pycharm/download/#section=windows

下載安裝后可以選擇新建一個項目,然后把需要編譯的py文件放在項目中。

第三步安裝引用包

在編譯過程中會發現兩個包的引用失敗BeautifulSoup和xlwt,前者是對html標記的解析庫,后者是可以對分析后的數據導出為excel文件

BeautifulSoup下載

xlwt下載

安裝方法一樣,這里的安裝類似Linux依賴安裝包一樣。

常用的安裝步驟

1.在系統中PATH環境變量添加Python安裝目錄

2.將需要安裝的包解壓后打開CMD命令窗口,分別切換至安裝包目錄,運行分別運行python setup.py build和python setup.py install

這樣兩個包就安裝完成了

第四步編譯運行

以下是編譯執行的抓取代碼,這里可以根據實際需求進行改動。簡單的實現網頁讀取,數據抓取就挺簡單的。

#coding:utf-8
import urllib2
import os
import sys
import urllib
import string
from bs4 import BeautifulSoup #導入解析html源碼模塊
import xlwt #導入excel操作模塊
row = 0

style0 = xlwt.easyxf('font: name Times SimSun')
wb = xlwt.Workbook(encoding='utf-8')
ws = wb.add_sheet('Sheet1')
for num in range(1,100):#頁數控制
 url = "http://www.xxx.com/Suppliers.asp?page="+str(num)+"&hdivision=" #循環ip地址
 header = {
            "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0",
            "Referer":"http://www.xxx.com/suppliers.asp"
        }
 req = urllib2.Request(url,data=None,headers=header)
 ope = urllib2.urlopen(req)
    #請求創建完成
 soup = BeautifulSoup(ope.read(), 'html.parser')
 url_list = [] #當前url列表

 for _ in soup.find_all("td",class_="a_blue"):
     companyname=_.a.string.encode('utf-8').replace("\r\n"," ").replace('|','')#公司名稱
     detailc=''#廠商詳情基本信息
     a_href='http://www.xxx.com/'+ _.a['href']+'' #二級頁面
     temphref=_.a['href'].encode('utf-8')
     if temphref.find("otherproduct") == -1:
          print  companyname
          print  a_href
          reqs = urllib2.Request(a_href.encode('utf-8'), data=None, headers=header)
          opes = urllib2.urlopen(reqs)
          deatilsoup = BeautifulSoup(opes.read(), 'html.parser')
          for content in deatilsoup.find_all("table", class_="zh_table"): #輸出第一種聯系方式詳情
             detailc=content.text.encode('utf-8').replace("\r\n", "")
             #print detailc # 輸出詳細信息
          row = row + 1  # 添加一行
          ws.write(row,0,companyname,style0)  # 第幾行,列1  列2...列n
          ws.write(row,1,   detailc,style0)
          print  '正在抓取'+str(row)
wb.save('bio-equip11-20.xls')
print '操作完成!'

運行結束則會在PycharmProjects項目的目錄下創建已經采集好的數據保存excel文件。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM