爬虫笔记(10/2)------定向爬取

定向爬取步骤:

1)爬取目的

2)设置网址过滤规则

3)设置内容采集规则

4)设置爬虫线程和爬虫数量

5)修正结果格式

6)进一步完善结果


核心内容是信息筛选:

1)正则表达式

2)XPath表达式

3)xslt筛选


加载最新的评论:

import urllib.request
import http.cookiejar
import re
#设置视频编号
vid = "1472528692"
#设置评论起始编码
comid = "6173403130078248384"
#构造出真实评论请求网址
url = "http://coral.qq.com/article/"+vid+"/comment?commentid="+comid+"&reqnum=20"
#设置头信息伪装成浏览器爬取
headers = {"Accept":"text/html,application/xhtml+html,application/xml;q=0.9,*/*;q=0.8","Accept-Encoding":"gb2312,utf-8","Accept-Language":"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3","User-Agent":"Mozilla/5.0(Windows NT 601;WOW64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0","Connection":"keep-alive","referer":"qq.com"}
#设置cookie
cjar = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cjar))
headall = []
for key,value in headers.items():
    item = (key,value)
    headall.append(item)
opener.addheaders = headall
urllib.request.install_opener(opener)
#建立一个自定义函数craw(vid,comid),实现自动爬取对应评论网页并返回爬取数据
def craw(vid,comid):
    url = "http://coral.qq.com/article/"+vid+"/comment?commentid="+comid+"&reqnum=20"
    #爬取该网页
    data = urllib.request.urlopen(url).read().decode("utf-8")
    return data
#分别构建筛选id,用户名,评论内容等信息的正则表达式
idpat = '"id":"(.*?)"'
userpat = '"nick":"(.*?)",'
conpat = '"content":"(.*?)",'
#第一层循环,代表爬取多少页,每一次外层循环爬取一页
for i in range(1,10):
    print("-------------------------------")
    print("第"+str(i)+"页评论内容")
    data = craw(vid,comid)
    #第二层循环,根据爬取的结果提取并处理每条评论的信息,一页20条评论
    #通过循环将获取到的信息遍历出来
    for j in range(0,20):
        #分别根据正则表达式查找到所有id,用户名,评论内容等信息
        idlist = re.compile(idpat,re.S).findall(data)
        userlist = re.compile(userpat,re.S).findall(data)
        conlist = re.compile(conpat,re.S).findall(data)
        #输出对应信息,并对字符串进行unicode编码,从而正常显示
        print("用户名是:"+eval('u"'+userlist[i]+'"'))
        print("评论内容是:"+eval('u"'+conlist[i]+'"'))
        print("\n")
    #将comid改变为该页的最后一条评论id,实现不断自动加载
    comid = idlist[19]


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值