python 自動(dòng)提交和抓取網(wǎng)頁
更新時(shí)間:2009年07月13日 00:36:49 作者:
最近在研究怎么樣做個(gè)自動(dòng)發(fā)帖器,要完成這個(gè)工具難度蠻大的,驗(yàn)證碼就是一個(gè)大問題(還沒有想到解決辦法哦,不管了),先要解決的是如何抓取,分析和提交頁面的問題。
下面是用python寫的,使用lxml來做html分析,從網(wǎng)上看到的,說是分析速度最快的哦,不過沒有驗(yàn)證過。好了,上代碼。
import urllib
import urllib2
import urlparse
import lxml.html
def url_with_query(url, values):
parts = urlparse.urlparse(url)
rest, (query, frag) = parts[:-2], parts[-2:]
return urlparse.urlunparse(rest + (urllib.urlencode(values), None))
def make_open_http():
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
opener.addheaders = [] # pretend we're a human -- don't do this
def open_http(method, url, values={}):
if method == "POST":
return opener.open(url, urllib.urlencode(values))
else:
return opener.open(url_with_query(url, values))
return open_http
open_http = make_open_http()
tree = lxml.html.fromstring(open_http("GET", "http://www.dhdzp.com").read())
form = tree.forms[0]
form.fields["q"] = "eplussoft"
form.action="http://www.dhdzp.com/search"
response = lxml.html.submit_form(form,open_http=open_http)
html = response.read()
doc = lxml.html.fromstring(html)
lxml.html.open_in_browser(doc)
恩,驗(yàn)證碼是個(gè)大問題。還有今天看了一些百度貼吧上的東西,更是壞了心情,它的驗(yàn)證碼是用ajax取的圖片,這就更加麻煩了。不過好像現(xiàn)在大多數(shù)的論壇和博客的驗(yàn)證碼都是這樣的了。這樣第一次抓取下來的頁面就不會包含有驗(yàn)證碼圖片了,更不要說分析驗(yàn)證碼圖片了。要解決的問題還是很多的。。。
復(fù)制代碼 代碼如下:
import urllib
import urllib2
import urlparse
import lxml.html
def url_with_query(url, values):
parts = urlparse.urlparse(url)
rest, (query, frag) = parts[:-2], parts[-2:]
return urlparse.urlunparse(rest + (urllib.urlencode(values), None))
def make_open_http():
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
opener.addheaders = [] # pretend we're a human -- don't do this
def open_http(method, url, values={}):
if method == "POST":
return opener.open(url, urllib.urlencode(values))
else:
return opener.open(url_with_query(url, values))
return open_http
open_http = make_open_http()
tree = lxml.html.fromstring(open_http("GET", "http://www.dhdzp.com").read())
form = tree.forms[0]
form.fields["q"] = "eplussoft"
form.action="http://www.dhdzp.com/search"
response = lxml.html.submit_form(form,open_http=open_http)
html = response.read()
doc = lxml.html.fromstring(html)
lxml.html.open_in_browser(doc)
恩,驗(yàn)證碼是個(gè)大問題。還有今天看了一些百度貼吧上的東西,更是壞了心情,它的驗(yàn)證碼是用ajax取的圖片,這就更加麻煩了。不過好像現(xiàn)在大多數(shù)的論壇和博客的驗(yàn)證碼都是這樣的了。這樣第一次抓取下來的頁面就不會包含有驗(yàn)證碼圖片了,更不要說分析驗(yàn)證碼圖片了。要解決的問題還是很多的。。。
您可能感興趣的文章:
- Python爬蟲使用Selenium+PhantomJS抓取Ajax和動(dòng)態(tài)HTML內(nèi)容
- Python抓取聚劃算商品分析頁面獲取商品信息并以XML格式保存到本地
- Python 抓取動(dòng)態(tài)網(wǎng)頁內(nèi)容方案詳解
- 零基礎(chǔ)寫python爬蟲之使用urllib2組件抓取網(wǎng)頁內(nèi)容
- 使用Python編寫簡單網(wǎng)絡(luò)爬蟲抓取視頻下載資源
- python采用requests庫模擬登錄和抓取數(shù)據(jù)的簡單示例
- python抓取網(wǎng)頁圖片示例(python爬蟲)
- Python實(shí)現(xiàn)抓取頁面上鏈接的簡單爬蟲分享
- 通過抓取淘寶評論為例講解Python爬取ajax動(dòng)態(tài)生成的數(shù)據(jù)(經(jīng)典)
- Python如何抓取天貓商品詳細(xì)信息及交易記錄
相關(guān)文章
Python 數(shù)據(jù)結(jié)構(gòu)之旋轉(zhuǎn)鏈表
這篇文章主要介紹了Python 數(shù)據(jù)結(jié)構(gòu)之旋轉(zhuǎn)鏈表的相關(guān)資料,需要的朋友可以參考下2017-02-02
python利用Excel讀取和存儲測試數(shù)據(jù)完成接口自動(dòng)化教程
這篇文章主要介紹了python利用Excel讀取和存儲測試數(shù)據(jù)完成接口自動(dòng)化教程,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
詳解Python的Twisted框架中reactor事件管理器的用法
這篇文章主要介紹了詳解Python的Twisted框架中reactor事件管理器的用法,Twisted是一款高人氣的異步Python開發(fā)框架,需要的朋友可以參考下2016-05-05
Pytorch訓(xùn)練網(wǎng)絡(luò)過程中l(wèi)oss突然變?yōu)?的解決方案
這篇文章主要介紹了Pytorch訓(xùn)練網(wǎng)絡(luò)過程中l(wèi)oss突然變?yōu)?的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05

