Python中使用mechanize庫抓取網頁上的表格資料
1、問題背景
2、解決方案
使用mechanize庫抓取網頁上的表格資料時,需要確保以下幾點:
-
使用正確的URL:請確保訪問的URL與手動瀏覽器訪問的URL一致。
-
設定瀏覽器選項:需要設定瀏覽器選項,以模擬真實瀏覽器的行為,如User-agent、Accept等。
-
選擇正確的表單:使用select_form()方法選擇要提交的表單。
-
設定表單值:使用set_value()方法設定表單中的值。
-
提交表單:使用submit()方法提交表單。
以下是解決問題的程式碼示例:
import httplib
import urllib
import urllib2
from BeautifulSoup import BeautifulSoup
import mechanize
from datetime import datetime, timedelta
from time import gmtime, strftime
import csv
import sys
import cookielib
# Browser
br = mechanize. Browser()
#list=["BSE30 ","BSE500 ","AUTO ","BANKEX ","BSECG ","BSECD ","BSEFMCG", "BSEHC ","MIDCAP ","SMLCAP ","TECK ","METAL ","OILGAS "]
list =[ "BSEFMCG"]
myfile = open( 'CII_Report.csv', 'w')
wr = csv. writer( myfile, quoting = csv. QUOTE_ALL)
#Time
date_today = sys. argv[ 2]
date_then = sys. argv[ 1]
print date_today, date_then
# Cookie Jar
cj = cookielib. LWPCookieJar()
br. set_cookiejar( cj)
# Browser options
br. set_handle_equiv( True)
br. set_handle_redirect( True)
br. set_handle_referer( True)
br. set_handle_robots( False)
br = mechanize. Browser()
br. set_handle_robots( False)
br. addheaders = [( 'User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1'),( 'Accept', '*/*')]
for item in list:
url = '
br. open( url)
response = br. response(). read()
br. select_form( nr = 0)
br. set_all_readonly( False)
br. form[ 'ctl00$ContentPlaceHolder1$txtFromDate'] = '14/11/3012'
br. form[ 'ctl00$ContentPlaceHolder1$txtToDate'] = '29/11/2013'
br. form. set_value([ item], name = 'ctl00$ContentPlaceHolder1$ddlIndex')
response = br. submit(). read()
result = response. strip(). split( '\r\n')
print result
a = '''close_last=result[1].split(',')[4]
close_current=result[len(result)-1].split(',')[4]
diff=float(close_current)-float(close_last)
diff_file="%.1f" %((diff*100.0)/float(close_last))
wr.writerow([item])
wr.writerow([result[len(result)-1].split(',')[0],close_current])
wr.writerow([result[1].split(',')[0],close_last])
wr.writerow(["CHANGE(%)",diff_file])
wr.writerow([" "])'''
myfile. close()
以上的程式碼中,我們做了以下修改:
-
將URL中的“expandable=3”改為了“expandable=2”,以確保訪問的是正確的URL。
-
在設定瀏覽器選項時,新增了“Accept”頭部,以模擬真實瀏覽器的行為。
-
在選擇表單時,使用的是“nr=0”,以選擇第一個表單。
-
在設定表單值時,將“ctl00$ContentPlaceHolder1$txtFromDate”和“ctl00$ContentPlaceHolder1$txtToDate”的值分別改為了“14/11/3012”和“29/11/2013”。
-
在提交表單時,使用的是“submit()”方法,而不是“submit().read()”方法。
這樣,就可以成功抓取網頁上的表格資料了。
在這個示例中,我們首先傳送一個GET請求來獲取網頁的內容,然後使用BeautifulSoup解析HTML內容。我們找到表格元素,然後遍歷表格的每一行和每個單元格,並輸出單元格的內容。
使用Requests和BeautifulSoup庫能夠更加方便地從網頁中提取資料,這兩個庫在Python中被廣泛應用於網頁抓取和資料提取任務。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70034537/viewspace-3009038/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用 Beautiful Soup 在 Python 中抓取網頁Python網頁
- Python網路爬蟲抓取動態網頁並將資料存入資料庫MYSQLPython爬蟲網頁資料庫MySql
- 如何用Python爬資料?(一)網頁抓取Python網頁
- 網頁資料抓取之噹噹網網頁
- 爬蟲抓取網頁資料原理爬蟲網頁
- 使用代理抓取網頁的原因網頁
- 如何使用Mechanize::PhantomJS庫JS
- 網頁抓取如何幫助資料分析?網頁
- NodeJS使用PhantomJs抓取網頁NodeJS網頁
- 18.2 使用NPCAP庫抓取資料包PCA
- 如何抓取網頁資訊?網頁
- 學會XPath,輕鬆抓取網頁資料網頁
- 使用chromedriver抓取網頁截圖Chrome網頁
- QueryList免費線上網頁採集資料抓取工具-toolfk.com網頁
- IP地址在網頁抓取中的作用網頁
- Go抓取網頁資料並存入MySQL和返回json資料Go網頁MySqlJSON
- Go和JavaScript結合使用:抓取網頁中的影像連結GoJavaScript網頁
- Python中的mechanize模組是什麼?Python
- node 抓取api資料匯出為excel表格APIExcel
- 使用Perl和WWW::Mechanize庫編寫
- [python] 基於Tablib庫處理表格資料Python
- 使用python3抓取pinpoint應用資訊入庫Python
- 將資料庫中資料匯出為excel表格資料庫Excel
- python簡書資料抓取Python
- 例項:使用puppeteer headless方式抓取JS網頁JS網頁
- MySQL 資料庫表格建立、資料插入及獲取插入的 ID:Python 教程MySql資料庫Python
- 【SqlServer】 理解資料庫中的資料頁結構SQLServer資料庫
- 表格資料的上移和下移
- Python 中 Panda 庫 處理表格方法Python
- Python——Reflex(資料庫使用)PythonFlex資料庫
- python怎樣抓取js生成的頁面PythonJS
- 騰牛網抓取(單頁)
- Oracle資料庫中的分頁查詢Oracle資料庫
- 資料分析系列 之python中擴充庫SciPy的使用Python
- NodeJs中資料庫的使用NodeJS資料庫
- 爬蟲進階——動態網頁Ajax資料抓取(簡易版)爬蟲網頁
- toapi:抓取任意網頁內容並提供 HTTP API獲取資料API網頁HTTP
- 【Python】Python抓取分享頁面的原始碼示例Python原始碼