使用Beautifulsoup爬取药智网数据
使用Beautifulsoup模块爬取药智网数据
Tips:1.爬取多页时,先用一页的做测试,要不然ip容易被封
2.自己常用的处理数据的方法:
reg=re.compile('正则表达式')
data=reg.sub('要替换的字符串',data)
代码(其实没多少)
# encoding=utf-8
from bs4 import BeautifulSoup
import urllib2
import time
class YBZC():
def __init__(self):
self.user_agent='Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
self.headers={'User-Agent':self.user_agent}
def getHtml(self,pageIndex):
try:
url='http://db.yaozh.com/zhuce?p='+str(pageIndex)
request=urllib2.Request(url,headers=self.headers)
respone=urllib2.urlopen(request)
html=respone.read()
return html
except urllib2.URLError,e:
if hasattr(e,'reason'):
print u"连接失败",e.reason
return None
def getItems(self):
for i in range(1,13):
html=self.getHtml()
soup=BeautifulSoup(html,"html.parser")
tr_list=soup.find_all('tr')
# 表格标题
if i==1:
for item in tr_list[0]:
if item not in ['\n','\t',' ']:
with open('yaopinzhuce1030.txt','a') as f:
f.write(item.get_text(strip=True).encode('utf-8')+'|')
#=========================2015-10-30================================
# 第一次的时候是现将数据全部都取下来,等存入文件的时候再筛选,现在直接筛选再
# 存入文件中,当时的时候并没有想到并且没有理解get_text()方法,这个也是
# 代码不精简的原因。。。。
#===================================================================
# list_tit=[]
# for ths in tr_list[0]:
# if ths.find('a'):
# for item in ths:
# if type(item)!=unicode:
# list_tit.append(item.string)
# else:
# list_tit.append(ths.get_text(strip=True))
# for item in list_tit:
# if item not in ['',' ','\n','\t']:
# with open('yaopinzhuce_new.txt','a') as f:
# f.write(item.encode('utf-8')+'|')
# 表格内容
f=open('yaopinzhuce1030.txt','a')
for tr in tr_list[1:]:
f.write('\n')
for item in tr:
if item not in ['',' ','\n']:
if item.string==None:
f.write('None'+'|')
else:
f.write(item.string.encode('utf-8')+'|') f.close()
print 'sleeping... pageloading %d/12' %i
time.sleep(5) spider=YBZC()
spider.getItems()
使用Beautifulsoup爬取药智网数据的更多相关文章
- 八爪鱼采集器︱爬取外网数据(twitter、facebook)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 要想采集海外数据有两种方式:云采集+单机采集. ...
- python3 requests + BeautifulSoup 爬取阳光网投诉贴详情实例代码
用到了requests.BeautifulSoup.urllib等,具体代码如下. # -*- coding: utf-8 -*- """ Created on Sat ...
- java爬虫,爬取当当网数据
背景:女票快毕业了(没错!我是有女票的!!!),写论文,主题是儿童性教育,查看儿童性教育绘本数据死活找不到,没办法,就去当当网查询下数据,但是数据怎么弄下来呢,首先想到用Python,但是不会!!百 ...
- python爬虫爬取赶集网数据
一.创建项目 scrapy startproject putu 二.创建spider文件 scrapy genspider patubole patubole.com 三.利用chrome浏览器 ...
- 【转】java爬虫,爬取当当网数据
背景:女票快毕业了(没错!我是有女票的!!!),写论文,主题是儿童性教育,查看儿童性教育绘本数据死活找不到,没办法,就去当当网查询下数据,但是数据怎么弄下来呢,首先想到用Python,但是不会!!百 ...
- python爬取返利网中值得买中的数据
先使用以前的方法将返利网的数据爬取下来,scrapy框架还不熟练,明日再战scrapy 查找目标数据使用的是beautifulsoup模块. 1.观察网页,寻找规律 打开值得买这块内容 1>分析 ...
- 初识python 之 爬虫:爬取中国天气网数据
用到模块: 获取网页并解析:import requests,html5lib from bs4 import BeautifulSoup 使用pyecharts的Bar可视化工具"绘制图表& ...
- 使用python爬取东方财富网机构调研数据
最近有一个需求,需要爬取东方财富网的机构调研数据.数据所在的网页地址为: 机构调研 网页如下所示: 可见数据共有8464页,此处不能直接使用scrapy爬虫进行爬取,因为点击下一页时,浏览器只是发起了 ...
- 基于爬取百合网的数据,用matplotlib生成图表
爬取百合网的数据链接:http://www.cnblogs.com/YuWeiXiF/p/8439552.html 总共爬了22779条数据.第一次接触matplotlib库,以下代码参考了matpl ...
随机推荐
- MS CRM 2013 Plugin 注册工具登录后空白
解决办法 把en-us, zh-CN 目录随便改个名字就好了
- ARM——操作系统—最小操作系统-开发板测试
怀着激动的心情,打算弄到硬件上试试. 折腾了一整天.终于运行起来了. 需要设置IBRD和CR,以及寄存器. 希望大家也能顺利完成自己的开发板实验. 我畅想了一下,目前所有带串口的嵌入式ARM设备,都应 ...
- Java三行代码搞定MD5加密,测试5c短信网关的demo
看到之前项目中,关于MD5加密的足足写了一个辅助类. 其实在Java中大部分都帮你实现好了,完成MD5加密,主要就三行代码: /** * 对字符串md5加密 * * @param str * @ret ...
- 面试题HTML +CSS
HTML+CSS部分1.行内元素和块级元素?img算什么?行内元素怎么转化为块级元素?行内元素:和有他元素都在一行上,高度.行高及外边距和内边距都不可改变,文字图片的宽度不可改变,只能容纳文本或者其他 ...
- spring配置文件
pom文件: <properties> <commons-lang.version>2.6</commons-lang.version> <slf4j.ver ...
- 我的Android第四章
本章需掌握 1.连接真机的过程. 2.dx指令的作用 3.adb是什么? 4.adb有什么用(有什么好处)? 5.adb的一些常用命令 1.连接真机的过程. 需要:一部Android机.usb连接线, ...
- ionic项目 环境搭建及基本操作
一.安装 1.安装node.js 3.安装ionic & cordova: 命令行输入:npm install –g cordova ionic 注:-g表示全局安装,也可以进入指定的目录安装 ...
- String高效编程优化(Java)
1, substring截取超大字符串可能造成的“内存泄漏” 2,+ 操作符的优化和局限 3,StringBuilder和StringBuffer 4,split和StringTokenizer做简单 ...
- web前端面试题总结
HTML Doctype作用? 严格模式与混杂模式如何区分?它们有何意义? (1).<!DOCTYPE> 声明位于文档中的最前面,处于 <html> 标签之前.告知浏览器的解析 ...
- Mapreduce体系架构
Mapreduce也采用master和slave的架构设计.Jobtracker负责作业的初始化和分配 与任务节点进行通信,协调整个作业的执行. 一个job分为两种task(map/reduce),包 ...