python爬取返利网中值得买中的数据
先使用以前的方法将返利网的数据爬取下来,scrapy框架还不熟练,明日再战scrapy
查找目标数据使用的是beautifulsoup模块。
1.观察网页,寻找规律
打开值得买这块内容
1>分析数据来源
网页上的数据分为一打开页面就存在的数据(源代码中可以看到的数据),
还有随着鼠标滑动,动态加载的数据(源代码中不显示的数据)。
2>查找规律
加载到最底端后,网页上面一共有50条相关数据,查看源代码,发现只有5条数据的源代码,剩下的数据全部是
动态加载出来的。分析这些动态数据:
F12打开Network这部分,刷新页面,鼠标不往下滑动时,并没有出现我们需要的后面的数据,随着鼠标滑动,
发现两个可能存有数据的项,发现只有ajaxGetItem...这个是我们所需要的,使用filter过滤一下。

过滤后发现如下规律:

1-2是第6-10条,1-3是第11-15条......

其他页也是这个规律,发现第二页中page参数那部分page=0-2,是从0打头的,我换成page=2-2后没有影响
所以规律就是把page部分换成对应的页数就好了。
2.代码
找到规律后,就可以写代码了。由于使用的是单线程,所以爬数据得到猴年马月了。
# encoding=utf-8
import urllib2
from bs4 import BeautifulSoup
import time
# 返利网值得买页面的源代码中只包含5条数据,
# 其他的数据是动态加载的,每个页面包含50条数据 class FanLi():
def __init__(self):
self.user_agent='Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
self.headers={'User-Agent':self.user_agent}
def get_url(self): list_url=[]
for i in range(1,760):
# 可内容直接获取的url1
url1='http://zhide.fanli.com/p'+str(i)
list_url.append(url1)
for j in range(2,11):
url2='http://zhide.fanli.com/index/ajaxGetItem?cat_id=0&tag=&page='+str(i)+'-'+str(j)+'&area=0&tag_id=0&shop_id=0'
list_url.append(url2)
return list_url
def getHtml(self,url):
# url='http://zhide.fanli.com/p'+str(pageIndex)
try:
request=urllib2.Request(url,headers=self.headers)
response=urllib2.urlopen(request)
html=response.read()
return html
except urllib2.URLError,e:
if hasattr(e,'reason'):
print u"连接失败",e.reason
return None
def parse(self):
urls=self.get_url()
i=0
# with open('zhide.txt',a) as f:
# f.write()
for url in urls:
i=i+1
html=self.getHtml(url)
soup=BeautifulSoup(html,'html.parser')
divs=soup.find_all('div',class_='zdm-list-item J-item-wrap item-no-expired') # for item in divs[0]:
# print 'item'+str(item) for div in divs:
con_list=[]
# 商品名称
title=div.find('h4').get_text()
# 分类
item_type=div.find('div',class_='item-type').a.string
# 推荐人
item_user=div.find('div',class_='item-user').string
# 内容
item_cont=div.find('div',class_='item-content').get_text(strip=True)
# 值得买人数
type_yes=div.find('a',attrs={'data-type':'yes'}).string
# 不值得买人数
type_no=div.find('a',attrs={'data-type':'no'}).string
con_list.append(title)
con_list.append(item_type)
con_list.append(item_user)
con_list.append(item_cont)
con_list.append(type_yes)
con_list.append(type_no) f=open('zhide.txt','a')
for item in con_list:
f.write(item.encode('utf-8')+'|')
f.write('\n')
f.close()
print 'sleeping loading %d'%i
time.sleep(3) zhide=FanLi()
zhide.parse()
python爬取返利网中值得买中的数据的更多相关文章
- python爬取当当网的书籍信息并保存到csv文件
python爬取当当网的书籍信息并保存到csv文件 依赖的库: requests #用来获取页面内容 BeautifulSoup #opython3不能安装BeautifulSoup,但可以安装Bea ...
- 使用python爬取东方财富网机构调研数据
最近有一个需求,需要爬取东方财富网的机构调研数据.数据所在的网页地址为: 机构调研 网页如下所示: 可见数据共有8464页,此处不能直接使用scrapy爬虫进行爬取,因为点击下一页时,浏览器只是发起了 ...
- [转]使用python爬取东方财富网机构调研数据
最近有一个需求,需要爬取东方财富网的机构调研数据.数据所在的网页地址为: 机构调研 网页如下所示: 可见数据共有8464页,此处不能直接使用scrapy爬虫进行爬取,因为点击下一页时,浏览器只是发起了 ...
- python爬取《龙岭迷窟》的数据,看看质量剧情还原度到底怎么样
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:简单 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行 ...
- Python爬取网上车市[http://www.cheshi.com/]的数据
#coding:utf8 #爬取网上车市[http://www.cheshi.com/]的数据 import requests, json, time, re, os, sys, time,urlli ...
- Python爬取散文网散文
配置python 2.7 bs4 requests 安装 用pip进行安装 sudo pip install bs4 sudo pip install requests 简要说明一下bs4的使用因为是 ...
- 利用python爬取贝壳网租房信息
最近准备换房子,在网站上寻找各种房源信息,看得眼花缭乱,于是想着能否将基本信息汇总起来便于查找,便用python将基本信息爬下来放到excel,这样一来就容易搜索了. 1. 利用lxml中的xpath ...
- Python爬取前程无忧网站上python的招聘信息
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 我姓刘却留不住你的心 PS:如有需要Python学习资料的小伙伴可以 ...
- Python 爬取赶集网租房信息
代码已久,有可能需要调整 #coding:utf-8 from bs4 import BeautifulSoup #有这个bs4不用正则也可以定位要爬取的内容了 from urlparse impor ...
随机推荐
- js 中关键字 this的用法
<1> js中this 的用法? (key:函数是由调用的,四种情况标红可知) (http://www.ruanyifeng.com/blog/2010/04/using_this_k ...
- 浅谈 Scrapy 爬虫(二)
越写越像官方文档的翻译,偏离了初衷.写一些官方文档里没有的内容吧. 在不限制宽带的环境下,根据页面的大小, Scrapy 一秒能爬取40-70个页面,一天在400万到600万页面.也就是说 Scr ...
- 谷歌 HTML/CSS 规范 2016-12-30
背景 这篇文章定义了 HTML 和 CSS 的格式和代码规范,旨在提高代码质量和协作效率. 通用样式规范 协议 省略图片.样式.脚本以及其他媒体文件 URL 的协议部分(http:,https:),除 ...
- 使用Astah制作UML时序图
Astah制作UML图--详解 时序图的制作 开篇语: 本文为光荣之路原创文章,欢迎转载,但请注明出处. 做测试的难免看到开发画出各种设计图,都很羡慕,比如: 帅么,漂亮么,其实我们测试人员也可以轻松 ...
- java 编译期常量
今天在看书的时候遇到了一个不是很懂的名词,是在think in java 这本书的第七章讲final关键字时讲到的.然后自己在网上查了一下知道了一些. 编译器常量就是:它的值在编译期就可以确定的常量. ...
- 扩展GridView实现的一个自定义无刷新分页,排序,支持多种数据源的控件TwfGridView
最近项目View层越来越趋向于无刷新化,特别是数据展示方面,还要对Linq有很好的支持.在WebFrom模式的开发中,GridView是一个功能很强大,很常用的控件,但是他也不是完美的,没有自带的无刷 ...
- AngularJS过滤器
1.过滤器可以使用一个管道字符(|)添加到表达式和指令中. 再次强调一点,所有的运行都要加入angularJS的库文件(类似JQuery的引用) 常见的AngularJS 过滤器 (1) lowerc ...
- 遇到的java面试题
1.struts2与struts1的区别 2.声明式事务是什么,怎么实现? 3.ajax两种请求方式 4.java中string str=new string("ss")创建了个几 ...
- php地址赋值值和传值赋值
下面这是php的赋值的两种方式: <?phpheader("Content-Type: text/html;charset=utf-8");$a="我是原始数据a& ...
- 用Python生成组织机构代码,附源码
#!/usr/bin/python import random def haoma(): ww = [3,7,9,10,5,8,4,2]#suan fa yin zi cc = [] dd=0 for ...