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網頁
- 爬取網頁後的抓取資料_3種抓取網頁資料方法網頁
- Python網路爬蟲抓取動態網頁並將資料存入資料庫MYSQLPython爬蟲網頁資料庫MySql
- 如何用Python爬資料?(一)網頁抓取Python網頁
- 網頁資料抓取之噹噹網網頁
- Java抓取網頁資料(原網頁+Javascript返回資料)網頁JavaScript
- python抓取網頁Python網頁
- 爬蟲抓取網頁資料原理爬蟲網頁
- 抓取網頁中的原始碼.網頁原始碼
- Python爬蟲使用代理proxy抓取網頁Python爬蟲網頁
- 使用代理抓取網頁的原因網頁
- [網路爬蟲]使用node.js cheerio抓取網頁資料爬蟲Node.js網頁
- 使用PHP的正則抓取頁面中的網址PHP
- 網頁抓取如何幫助資料分析?網頁
- node 爬蟲,使用 Google puppeteer 抓取 One一個 的網頁資料爬蟲Go網頁
- 網頁資料抓取工具,webscraper 最簡單的資料抓取教程,人人都用得上網頁Web
- Python爬蟲: 抓取One網頁上的每日一話和圖Python爬蟲網頁
- python抓取網頁中圖片並儲存到本地Python網頁
- 學會XPath,輕鬆抓取網頁資料網頁
- 在Dreamweaver中靈活使用網頁表格(轉)網頁
- IP地址在網頁抓取中的作用網頁
- 使用chromedriver抓取網頁截圖Chrome網頁
- Python中的mechanize模組是什麼?Python
- 小豬的Python學習之旅 —— 5.使用Selenium抓取JavaScript動態生成資料的網頁PythonJavaScript網頁
- 如何使用Mechanize::PhantomJS庫JS
- Go和JavaScript結合使用:抓取網頁中的影像連結GoJavaScript網頁
- php中抓取網頁內容的程式碼PHP網頁
- node 抓取api資料匯出為excel表格APIExcel
- Go抓取網頁資料並存入MySQL和返回json資料Go網頁MySqlJSON
- 使用Perl和WWW::Mechanize庫編寫
- 18.2 使用NPCAP庫抓取資料包PCA
- Python網頁抓取工具Beautiful Soup面面觀!Python網頁
- java抓取HTML頁面的資料(淘寶頁面),JavaHTML
- NodeJS使用PhantomJs抓取網頁NodeJS網頁
- 使用Scrapy抓取資料
- python3使用requests包抓取並儲存網頁原始碼Python網頁原始碼
- 使用Python呼叫Flickr API抓取圖片資料PythonAPI