使用python抓取网页上的信息

本文详细介绍了如何利用Python语言通过发送HTTP请求、解析HTML内容、匹配正则表达式来自动化抓取迅雷粉网站上的每日更新的会员账号密码,并将这些信息保存至本地文件,以实现简化登录流程的目的。

写在前面:

第一篇博客,开始记录python学习实践之路。学习方法为先模仿,做出一个东西,再分析实现细节,即《程序员思维修炼》中说的R型学习法。沧海拾贝,一颗颗漂亮的石头终将堆积雄伟的python大山。


一、需求分析

抓取迅雷粉(http://xlfans.com/)上每日更新的迅雷会员账号密码,存入本地后直接复制粘贴,省去打开浏览器等一系列步骤


二、实现步骤

1.打开网站首页,获取最新发布页面的URL,其中采用requests类库发送请求,用pyquery分离元素,获取URL

2.获取源码之后,用正则表达式匹配账号密码,再做一些小修饰,输出到本地文件


三、几点说明

1.python版本为2.7,因为没能在3.4版本中成功下载pyquery库

2.这个网站采用了安全防护策略,所以有些时候并不能获取网页源码,我也在发送的请求中设置了user-agent,好像能管一些用,这个不是很清楚

3.字符编码有问题,但是稀里糊涂根据规则整好了

3.输出文件的路径设置成了“d:/result.txt”


四、源码及结果

import re
import sys
import requests
from pyquery import PyQuery as pq
reload(sys)
sys.setdefaultencoding('GBK')
fp = open("d:/result.txt",'w')
url = 'http://xlfans.com/'
headers = {
            'Accept-Language': 'zh-cn',
            'Content-Type': 'application/x-www-form-urlencoded',
            'User-Agent': 'Mozilla/4.0 (compatible MSIE 6.00 Windows NT 5.1 SV1)',
        }
r = requests.post(url, headers = headers)
#print r.text
html_content = pq(r.text)
#print r.encoding
#print r.text
content = pq( html_content('.focus').html())
disurl =  content.attr('href')
r = requests.get(disurl,headers = headers)
#print r.text
#f = open('d:/html_content.txt','w')
#print >>f,r.text
result = ''
m = re.findall('(.*<br />)',str(r.text))
for i in range(len(m)):
    if re.match('.*href',m[i]):
        continue
    #print >>fp,m[i][0:-6]
    result += m[i][0:-6]
    result += '\n'
print >>fp, result

print "Please see the result..."

五、后续工作

1.熟悉发送请求的首部信息

2.Python中的编码问题

3.继续研究requests和pyquery两个类库,是不是还有更好的方法抓取目标URL和信息呢?

4.复习正则表达式,练习python中正则表达式相关方法


六、尾

你将在接下来的博文中看到以上问题的解答或者总结



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值