作者darkch (chang)
看板Python
标题Re: [问题] 关於网页抓取内容
时间Sun Sep 14 01:11:24 2014
※ 引述《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
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 218.173.24.105
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Python/M.1410628291.A.6F2.html