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 ...
随机推荐
- java加法流程图
- 腾达和小云无线路由中继(WISP)解决
记录一下: ============================================ A路由为主路由-接光纤 (小云智能路由) B路由为中继放大(腾达),B路由的电脑 有线连接,网卡设 ...
- USB驱动开发大全【转】
本文转载自:http://www.360doc.com/content/12/0504/19/8363527_208666082.shtml 编写USB驱动程序步骤:1所有usb驱动都必须创建主要结构 ...
- GPIO口及中断API函数【转】
本文转载自:http://blog.sina.com.cn/s/blog_a6559d9201015vx9.htmlG #include <linux/gpio.h> // 标准 GPIO ...
- Struts2 基本配置
Struts2是一个优秀的MVC框架,也是我比较喜欢用的框架.它个各种配置基本都可以集中在一个xml文档中完成.现在让我们看看如何简单几步实现常用功能. 一.搭建Struts2的开发环境 1)首先是利 ...
- C语言中关于POW在不同状态下四舍五入的解决方法
这是今天作业中的一个代码: #include <stdio.h>#include<math.h>int main(){ printf("请输入一个整数:") ...
- java static静态方法的并发性
在做一个web项目的时候需要做一个通用类去处理一些问题,想到这个类很多地方都有用到,又不想每次都new一个,因此就定义了里面的方法是静态方法,然后又因为多个静态方法都用到了同一个对象,结果定义了一个类 ...
- location对象说明
在浏览器的console层输入 location 即可输出该对象的相关信息 location.protocol 协议类型 http/https location.hostname 主机名 loc ...
- php使用内置的mcrypt_encrypt和mcrypt_decrypt进行字符串加密解密
<?php /*****************************加密*******************************/$key = "miyao";// ...
- JCEF 如何修改右键菜单项(JCEF在右键菜单中添加开发者选项-show dev tools)
需求: 在界面的右键事件中添加一个打开开发者选项的菜单(Show Dev Tools) 所以我们可以看到的是在界面上右键,会有默认的一些菜单项(前进,后退,打印,查看源码),而这些功能并不一定是我们需 ...