python收集网页中的翻页
来源:互联网 发布:中级程序员报考条件 编辑:程序博客网 时间:2024/05/30 23:03
要用采集器采集网页中的图片,由于网址里面的下一页是javascript形式的,此采集器无法判断,所以先用python把网址搜集起来。
观察到每翻一页,网址后面的页码数+1。为提高效率,减少访问数,先找到可见的最后一个链接,根据此链接页码数,拼凑出前面网址。
观察到每翻一页,网址后面的页码数+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 = []
0 0
- python收集网页中的翻页
- python 数据处理网页收集
- 用PHP实现网页开发中的翻页跳转
- 收集整理的python相关网页
- python中的静态网页
- Python中的网页爬虫
- C#收集网页中的EMail实现源码
- 键盘实现网页翻页
- PYTHON抓取网页中的邮箱
- Python抓取网页中的链接
- python 下载网页中的图片
- Python:提取网页中的电子邮箱
- Python爬虫实例(3)-用BeautifulSoup爬取多个可翻页网页上的多张照片
- 网页翻页效果的实现
- sqlserver中的翻页
- iphone中的翻页效果
- Vim中的翻页命令
- VIM中的翻页命令
- 第八周--项目3-顺序串算法
- 同步互斥
- Kernel panic – not syncing: Attempted to kill init 解决
- Android View绘制的13问13答。
- java.sql Connection
- python收集网页中的翻页
- datatables实现异步加载与增删改查
- 详解Unity Profiler内存分析问题
- VLC
- java操作HDFS------Hadoop学习(3)
- 个人自工作以来断断续续做的一些笔记 ---- 陆续还会进行补充
- H3C S5500 修改vlan的dns-list
- 用dos命令修改文档的内容
- 双系统:windows下编辑linux文件。