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