使用Beautifulsoup爬取药智网数据

使用Beautifulsoup模块爬取药智网数据

Tips:1.爬取多页时,先用一页的做测试,要不然ip容易被封

2.自己常用的处理数据的方法:

reg=re.compile('正则表达式')
data=reg.sub('要替换的字符串',data)

 

代码(其实没多少)

 1 # encoding=utf-8
 2 from bs4 import  BeautifulSoup
 3 import urllib2
 4 import time
 5 class YBZC():
 6     def __init__(self):
 7         self.user_agent='Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
 8         self.headers={'User-Agent':self.user_agent}
 9     def getHtml(self,pageIndex):
10         try:
11             url='http://db.yaozh.com/zhuce?p='+str(pageIndex)
12             request=urllib2.Request(url,headers=self.headers)
13             respone=urllib2.urlopen(request)
14             html=respone.read()
15             return html
16         except urllib2.URLError,e:
17             if hasattr(e,'reason'):
18                 print u"连接失败",e.reason
19                 return  None
20     def getItems(self):
21         for i in range(1,13):
22             html=self.getHtml()
23             soup=BeautifulSoup(html,"html.parser")
24             tr_list=soup.find_all('tr')
25             # 表格标题
26             if i==1:
27                 for item  in tr_list[0]:
28                     if item not in ['\n','\t',' ']:
29                         with open('yaopinzhuce1030.txt','a') as f:
30                             f.write(item.get_text(strip=True).encode('utf-8')+'|')
31                 #=========================2015-10-30================================
32                 # 第一次的时候是现将数据全部都取下来,等存入文件的时候再筛选,现在直接筛选再
33                 # 存入文件中,当时的时候并没有想到并且没有理解get_text()方法,这个也是
34                 # 代码不精简的原因。。。。
35                 #===================================================================
36                 # list_tit=[]
37                 # for ths in tr_list[0]:
38                     # if ths.find('a'):
39                 #         for item in ths:
40                 #             if type(item)!=unicode:
41                 #                 list_tit.append(item.string)
42                 #     else:
43                 #         list_tit.append(ths.get_text(strip=True))
44                 # for item in list_tit:
45                 #     if item not in ['',' ','\n','\t']:
46                 #         with open('yaopinzhuce_new.txt','a') as f:
47                 #             f.write(item.encode('utf-8')+'|')
48             # 表格内容
49             f=open('yaopinzhuce1030.txt','a')
50             for tr in tr_list[1:]:
51                 f.write('\n')
52                 for item in tr:
53                     if item not in ['',' ','\n']:
54                        if item.string==None:
55                             f.write('None'+'|')
56                        else:
57                             f.write(item.string.encode('utf-8')+'|')
58 
59             f.close()
60             print 'sleeping... pageloading %d/12' %i
61             time.sleep(5)
62 
63 
64 spider=YBZC()
65 spider.getItems()

 

转载于:https://www.cnblogs.com/RoundGirl/p/4924235.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375431.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

幂集 返回某集合的所有子集

幂集。编写一种方法,返回某集合的所有子集。集合中不包含重复的元素。 说明:解集不能包含重复的子集。 示例: 输入: nums [1,2,3]输出: [[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[] ]来源:力扣(LeetCode…

iOS标准时间与时间戳相互转换

本文转载至 http://blog.sina.com.cn/s/blog_a843a8850101dzqd.html [cpp] view plaincopy 设置时间显示格式: NSString* timeStr "2011-01-26 17:40:50"; NSDateFormatter *formatter [[[NSDateFormatter alloc] init] autorelease]; [formatter s…

JavaScript设计模式 Item 3 --封装

在JavaScript 中,并没有对抽象类和接口的支持。JavaScript 本身也是一门弱类型语言。在封装类型方面,JavaScript 没有能力,也没有必要做得更多。对于JavaScript 的设计模式实现来说,不区分类型是一种失色,也可以说是一…

【WCF安全】WCF 自定义授权[用户名+密码+x509证书]

1.x509证书制作(略) 2.直接贴代码 ----------------------------------------------------------------------服务端------------------------------------------------------------------------------------------- WCF服务 1 using System;2 using System.Collections.Generi…

openMVS-编译

opencv4 编译 会有问题,可以重新下载 opencv3 编译并指定好路径。 OpenCV_DIRyour opencv3 build install path cmake -DCMAKE_BUILD_TYPERelease -DVCG_ROOT"$main_path/vcglib" ..

ASP.NET Web API 数据提供系统相关类型及其关系

转载于:https://www.cnblogs.com/frankyou/p/4932651.html

openMVG跑自定义数据出错

使用自己拍摄的图片跑 openMVG 的 turtor_demo.py 时,出现错误,没有生成 sfm_data.bin DSC01988" model "DSC-RX100M6" doesnt exist in the database Please consider add your camera model and sensor width in the database.原因时数…

windows server 2003下安装iis6+php

参照http://www.myhack58.com/Article/sort099/sort0100/2012/35579.htm 这篇文章,即可! 前 面我写了《windows安装PHP5.4Apache2.4Mysql5.5》的安装教程,本地实现是很简单的,但是有人还是喜欢用IIS来配置 PHP环境,部分…

将 JAR 转为 EXE – JSMOOTH 的使用教程(第二期)(转载)

http://www.iteknical.com/convert-jar-to-exe-phase-ii-jsmooth-use-tutorial/转载于:https://www.cnblogs.com/leinuo2016/p/4932790.html

“”要求左值

错误 C2102 “&”要求左值 wrong code typedef struct CodeData {void *ptr_;CodeData(void*ptr) : ptr_(ptr){} } CodeData;typedef struct Data {int data_;data(int data) : data_(data){} } Data;// 这里出错,因为&后面是临时变量,不能取地…

winform自定义文件程序-- 不允许所请求的注册表访问权(ZSSQL)

常见问题1: 不允许所请求的注册表访问权 win7、win8 双击程序文件ZSSQL时候会出现 不允许所请求的注册表访问权 的弹窗异常 解决方法:ZSSQL.exe 右键 属性--兼容性--以管理员身份运行此程序 转载于:https://www.cnblogs.com/DemoLee/p/4173324.html

UITabBarController使用总结

刚看了几天教程就开始跟着开发了,以前也没学过C,太痛苦了~只能看看大神的博客,自己再总结学习一下了。 1.首先新建一个TabBarViewController继承于UITabBarController。然后什么都不用写,相当于装各个tab页的容器。 2.给每个视图都…

Auto-Configuration Error: Cannot find gcc or CC

bazel 编译的时候出错 首先 echo $CC 检查,若输出无值,则 export CCcc

Effective Modern C++英文版及中文翻译

https://pan.baidu.com/s/1uqEBGHn3dcVON18oRK5LNQ 提取码:gqqv 中文版不用看了,译者估计自己都不怎么用c11\14,翻译的巨垃圾。

第一个 mac 程序 Create-JSON-Model

第一个 mac 程序 Create-JSON-Model 效果图 数据 {"ID":null,"name":"Doe","first-name":"John","age":25,"hobbies":["reading","cinema",{"sports":["volley-bal…

php中utf8 与utf-8

php中utf8 与utf-8 原文:php中utf8 与utf-8相信很多程序员刚开始也会有这样的疑惑,如题,我也是。 其实,他们可以这样来区分。 一、在php和html中设置编码,请尽量统一写成“UTF-8”,这才是标准写法,而utf-8只是在…

编译vtk

https://vtk.org/Wiki/VTK/Configure_and_Build#On_Windows

Android--简单开发和使用ContentProvider数据共享

今天学习的时候学到了ContentProvider数据共享这个东东,所以自己写了个小例子: 我们要开发ContentProvider的话,需要创建一个类去继承ContentProvider,里面会让你重写四个方法,这四个方法就是数据共享用到的方法 包括SQLite的插入、查询、删除…

ECharts数据图表系统? 5分钟上手!

目录: 前言简介方法一:模块化单文件引入(推荐)方法二:标签式单文件引入【前言】 最近在捣鼓各种插件各种框架,发现这个ECharts还是比较不错的,文档也挺全的,还是中文的,给大家推荐一下。 这篇文…

vscode 配置 pcl头文件库

ctrl shift p 输入Edit configuretion 在includePath种添加 “${PCL_ROOT}/include/pcl-1.12/”