Re: [問題] 關於網頁抓取內容

作者: darkch (chang)   2014-09-14 01:11:24
※ 引述《jenocool ()》之銘言:
咬光光
: 不知道要用什麼方法將他們合併?
: 另外想請問一下,抓取GOOGLE搜尋結果似乎會有問題
: 上網查了一下似乎是有防止抓取
: 不知道有沒有什麼方法可以解決?
: 看了一整天還是一頭霧水 ..
: 謝謝大家了
import urllib, urllib2
import sys
from lxml.html import fromstring
reload(sys)
sys.setdefaultencoding('utf-8')
class http_code:
def __init__(self):
self.url = ''
def get_html(self):
headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
req = urllib2.Request(self.url, headers = headers)
soup = urllib2.urlopen(req).read()
page = fromstring(soup)
return page
if __name__ == '__main__':
keyword = u'潮肉'
yahoo = http_code()
yahoo.url ='https://search.yahoo.com/search;_ylt=A0SO8zWDzhNUscYAlQil87UF;_ylc=X1MDOTU4MTA0NjkEX3IDMgRmcgMEZ3ByaWQDUDZjYmxIRHRRNHlPS3Q3dWFubWt6QQRuX3JzbHQDMARuX3N1Z2cDOQRvcmlnaW4Dc2VhcmNoLnlhaG9vLmNvbQRwb3MDMARwcXN0cgMEcHFzdHJsAwRxc3RybAMyBHF1ZXJ5AJBHRfc3RtcAMxNDEwNTg0MTMw?p=%s&fr=sfp&fr2=sb-top-search&iscqry=' % keyword
content = yahoo.get_html()
for elem in content.iter():
if elem.text:
print elem.text
剛好最近也在研究如何抓取網頁訊息,我找到方式是利用fromstring的方法將所有標籤內容、值都取出
你可以用elem.tag (這很淺顯易懂XD)
elem.attirb(這是取標籤內的值,屬於dictionary)
elem.text(這是取得被標籤包覆的內容)
你有提到google沒辦法抓取,那是因為google不認瀏覽器以外的header(目前測試的情況是這樣)
在request加上header,google search就可以直接取內容了
( url = 'https://www.google.com.tw/search?q=%s' % keyword )
當然還有很多方法可以玩,就看怎麼玩XD

Links booklink

Contact Us: admin [ a t ] ucptt.com