python 自動(dòng)提交和抓取網(wǎng)頁(yè)
更新時(shí)間:2009年07月13日 00:36:49 作者:
最近在研究怎么樣做個(gè)自動(dòng)發(fā)帖器,要完成這個(gè)工具難度蠻大的,驗(yàn)證碼就是一個(gè)大問(wèn)題(還沒(méi)有想到解決辦法哦,不管了),先要解決的是如何抓取,分析和提交頁(yè)面的問(wèn)題。
下面是用python寫的,使用lxml來(lái)做html分析,從網(wǎng)上看到的,說(shuō)是分析速度最快的哦,不過(guò)沒(méi)有驗(yàn)證過(guò)。好了,上代碼。
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.dbjr.com.cn").read())
form = tree.forms[0]
form.fields["q"] = "eplussoft"
form.action="http://www.dbjr.com.cn/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è)大問(wèn)題。還有今天看了一些百度貼吧上的東西,更是壞了心情,它的驗(yàn)證碼是用ajax取的圖片,這就更加麻煩了。不過(guò)好像現(xiàn)在大多數(shù)的論壇和博客的驗(yàn)證碼都是這樣的了。這樣第一次抓取下來(lái)的頁(yè)面就不會(huì)包含有驗(yàn)證碼圖片了,更不要說(shuō)分析驗(yàn)證碼圖片了。要解決的問(wè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.dbjr.com.cn").read())
form = tree.forms[0]
form.fields["q"] = "eplussoft"
form.action="http://www.dbjr.com.cn/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è)大問(wèn)題。還有今天看了一些百度貼吧上的東西,更是壞了心情,它的驗(yàn)證碼是用ajax取的圖片,這就更加麻煩了。不過(guò)好像現(xiàn)在大多數(shù)的論壇和博客的驗(yàn)證碼都是這樣的了。這樣第一次抓取下來(lái)的頁(yè)面就不會(huì)包含有驗(yàn)證碼圖片了,更不要說(shuō)分析驗(yàn)證碼圖片了。要解決的問(wèn)題還是很多的。。。
您可能感興趣的文章:
- Python爬蟲(chóng)使用Selenium+PhantomJS抓取Ajax和動(dòng)態(tài)HTML內(nèi)容
- Python抓取聚劃算商品分析頁(yè)面獲取商品信息并以XML格式保存到本地
- Python 抓取動(dòng)態(tài)網(wǎng)頁(yè)內(nèi)容方案詳解
- 零基礎(chǔ)寫python爬蟲(chóng)之使用urllib2組件抓取網(wǎng)頁(yè)內(nèi)容
- 使用Python編寫簡(jiǎn)單網(wǎng)絡(luò)爬蟲(chóng)抓取視頻下載資源
- python采用requests庫(kù)模擬登錄和抓取數(shù)據(jù)的簡(jiǎn)單示例
- python抓取網(wǎng)頁(yè)圖片示例(python爬蟲(chóng))
- Python實(shí)現(xiàn)抓取頁(yè)面上鏈接的簡(jiǎn)單爬蟲(chóng)分享
- 通過(guò)抓取淘寶評(píng)論為例講解Python爬取ajax動(dòng)態(tài)生成的數(shù)據(jù)(經(jīng)典)
- Python如何抓取天貓商品詳細(xì)信息及交易記錄
相關(guān)文章
Python中TCP協(xié)議的探索與實(shí)例解析
網(wǎng)絡(luò)編程在當(dāng)今數(shù)字化世界中扮演著至關(guān)重要的角色,本文將帶你深入了解 Python 中的 TCP 協(xié)議,介紹網(wǎng)絡(luò)編程的基礎(chǔ)知識(shí),并提供豐富的示例代碼,希望對(duì)大家有所幫助2023-12-12jupyter notebook讀取/導(dǎo)出文件/圖片實(shí)例
這篇文章主要介紹了jupyter notebook讀取/導(dǎo)出文件/圖片實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04Pygame Surface創(chuàng)建圖像的實(shí)現(xiàn)
本文主要介紹了Pygame Surface創(chuàng)建圖像的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02Python復(fù)制Excel帶有條件格式的單元格sheet實(shí)現(xiàn)步驟
這篇文章主要為大家介紹了Python復(fù)制Excel帶有條件格式的單元格sheet實(shí)現(xiàn)步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07關(guān)于tensorflow的幾種參數(shù)初始化方法小結(jié)
今天小編就為大家分享一篇關(guān)于tensorflow的幾種參數(shù)初始化方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01Python卷積神經(jīng)網(wǎng)絡(luò)圖片分類框架詳解分析
在機(jī)器視覺(jué)領(lǐng)域中,卷積神經(jīng)網(wǎng)絡(luò)算法作為一種新興算法出現(xiàn),在圖像識(shí)別領(lǐng)域中,卷積神經(jīng)網(wǎng)絡(luò)能夠較好的實(shí)現(xiàn)圖像的分類效果,而且其位移和形變具有較高的容忍能力2021-11-11