博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python收集网页中的翻页
阅读量:4081 次
发布时间:2019-05-25

本文共 1482 字,大约阅读时间需要 4 分钟。

要用采集器采集网页中的图片,由于网址里面的下一页是javascript形式的,此采集器无法判断,所以先用python把网址搜集起来。
观察到每翻一页,网址后面的页码数+1。为提高效率,减少访问数,先找到可见的最后一个链接,根据此链接页码数,拼凑出前面网址。

然后访问最后链接,查找是否有“下一页”字段,如果有,就拼凑出下一页网址。

#!/usr/bin/python# -*- coding: UTF-8 -*-import requestsfrom lxml import etreedef find_url(url):    global count,newUrl    #找到最后一个课程链接,取出页码,拼凑1至此页码的网址并添加到列表newUrl。    #XPath规则可在chrome中查看。    r = requests.get(url+'001.htm')    count += 1    html = etree.HTML(r.text)    #找到最后一个可见链接    result = html.xpath('//div[@class="xxxxxx"]/a[last()]/@href')    #取出链接中的页码数    maxNumber = int(result[0].split('/')[-1].split('.')[0])    print maxNumber    #拼凑前面网址添加到列表newUrl    for i in xrange(1,maxNumber+1):        nextUrl = "{0}{1:0>3}.htm".format(url , i)        newUrl.append(nextUrl)        #判断网页中是否有“下一页”,如果有,拼凑出下一页网址,并添加到newUrl    nextR = requests.get(newUrl[-1])    count += 1    nextR.encoding = 'GBK'    #查找“title="下一页"”    while nextR.text.find(u'title="下一页"') != -1:        maxNumber += 1        nextUrl = "{0}{1:0>3}.htm".format(url , maxNumber)        newUrl.append(nextUrl)        print maxNumber        try:            nextR = requests.get(nextUrl)            count += 1            nextR.encoding = 'GBK'        except:            break         print '访问url数:',count   #记录访问数,每访问一次,count加1count = 0#用于存储url的列表newUrl = []for row in open(u'E:/xx/xxxx/rjb_1.txt','r'):    find_url(row.strip())    #存入文本    with open(u'E:/xx/xxxx/url_a1.txt','a') as f:        for url in newUrl:            print >> f,url    newUrl = []

转载地址:http://mktni.baihongyu.com/

你可能感兴趣的文章
数据结构(六)之双向链表
查看>>
数据结构(七)之集合结构
查看>>
数据结构(八)之字典结构
查看>>
React 自定义Hook的思想
查看>>
React Native 无限列表的优化与实践
查看>>
React Redux常见问题总结
查看>>
前端 DSL 实践指南
查看>>
ReactNative: 自定义ReactNative API组件
查看>>
cookie
查看>>
总结vue知识体系之实用技巧
查看>>
(CI & CD)Jenkins+GitHub+Vue
查看>>
前端想要了解的Nginx
查看>>
PM2 入门
查看>>
掌握 TS 这些工具类型,让你开发事半功倍
查看>>
写一个自用的前端脚手架
查看>>
vue + typescript 项目起手式
查看>>
vue + typescript 进阶篇
查看>>
前端开发如何让持续集成/持续部署(CI/CD)跑起来
查看>>
你知道,HTTPS用的是对称加密还是非对称加密?
查看>>
vue+koa2实现最简单的注册登录功能
查看>>