最近研究如何利用爬虫技术,抓取图书销量和店面信息。使用几个方法都没有抓到<span>标签下面的数值是空值,是不是做了反爬虫机制处理。刚好利用这个机会来复习一下爬虫三种方法。纯属个人爱好,不用于商用。希望有网友能告诉我为什么span的值是空值。

目录

抓取的网站

爬虫目的

挖坑路程

总结思路


抓取的网站

http://search.dangdang.com/?key=%D6%D8%B7%B5%C0%C7%C8%BA%B1%B3%BA%F3%B5%C4%B9%CA%CA%C2&act=input

网站的源码:

爬虫目的

抓取网站里面各个商铺的名字、书名、还有价格、还有简介。

挖坑路程

方法一

用BeautifulSoup模块进行抓取。【bs方法抓取很快,上手也很快。看一下源代码的架构就模仿出来进行抓取。不管是抓标签p,标签a,标签li等标签内容。注意抓取的select方法,是逐级往下进行筛选。】

import requests
import urllib.request
from bs4 import BeautifulSoupdef get_html(url):headers = {'User-Agent': 'Mozilla/5.0(Macintosh; Intel Mac OS X 10_11_4)\AppleWebKit/537.36(KHTML, like Gecko) Chrome/52 .0.2743. 116 Safari/537.36'}  # 模拟浏览器访问response = requests.get(url, headers=headers)  # 请求访问网站html = response.text  # 获取网页源码return html  # 返回网页源码soup = BeautifulSoup(get_html('http://search.dangdang.com/?key=%D6%D8%B7%B5%C0%C7%C8%BA%B1%B3%BA%F3%B5%C4%B9%CA%CA%C2&act=input'), 'lxml')  # 初始化BeautifulSoup库,并设置解析器
get_html('http://search.dangdang.com/?key=%D6%D8%B7%B5%C0%C7%C8%BA%B1%B3%BA%F3%B5%C4%B9%CA%CA%C2&act=input')
text = soup.select('#search_nature_rg > ul.bigimg > li > a ')#只定为到末级,中间不算。
content3 = soup.select('#search_nature_rg > ul > li > div.lable_label > span.new_lable ')#定义自营门店
print(content3)

抓取的结果:(方法是对的了,抓取a、p的值都能出现了。span标签有点特殊,我想不通我换了正则表达式方法进行计算一下。)

方法二:

正则表达式抓取某网span标签内容的代码。难度很大,但是搜索相当方便。

import json
import requests
from requests.exceptions import RequestException #引入异常
import re
import time
def get_one_page(url):try:response = requests.get(url)if response.status_code == 200: #由状态码判断返回结果return response.text #返回网页内容return Noneexcept RequestException:return Nonedef parse_one_page(html):pattern = re.compile('.*?lable1.*?>(\D\D+)', re.S) #compile函数表示一个方法对象,re.s匹配items = re.findall(pattern, html) #以列表形式返回全部能匹配的字符串。print(items)def main(url):html = get_one_page(url)parse_one_page(html)if __name__ == '__main__':url = 'http://search.dangdang.com/?key=%D6%D8%B7%B5%C0%C7%C8%BA%B1%B3%BA%F3%B5%C4%B9%CA%CA%C2&act=input'main(url)

运行结果:(带有span标签的内容也是抓出来是空白项,两个方法都试过了,肯定span标签做了限制,或者有其他原因。)

第三个方法:

(request方法)参考我的博客另一个链接的地址进行抓取了。这里不演示了。

用Python2.7.5抓取某某网的图片_业里村牛欢喜的博客-CSDN博客

总结思路

使用request、bs、正则表达式方法都就可以抓取到网站的数据,reguest和bs的方法比较简单,正则表达式比较困难了,抓取的方法和抓取的速度不一致。选择最适合自己的方法进行爬虫抓取了,各个方法都会自己优越性。

参考文献:Python网络爬虫入门篇 - z寒江雪 - 博客园

还有不计其数的网友提供的帮助。

Python爬虫方法三部曲相关推荐

  1. Python爬虫方法三部曲之二-实战训练

    前面学习的爬虫的方法,马上利用到实战中,抓取某网站的信息.使用bs.request的方法进行数据的抓取.主要分享一些实战的经验和总结,此文章抓取数据用于分享.(注意不要乱爬取数据用于商业用途谋私,遵纪 ...

  2. python pexels_从零开始学习python爬虫方法,从安装到语法基础(附赠资料)

    01 Python与PyCharm安装 "工欲善其事,必先利其器",本节介绍Python环境的安装和Python的集成开发环境(IDE)PyCharm的安装. 1. Python安 ...

  3. python自学爬虫要多久_自学python爬虫需要多久

    如果是自学,从零基础开端学习python的话,按照每个人理解能力的不同,大致上需求半年到一年半左右的时刻,当然,如果有其它编程言语的经历,入门还是比较快的,大概需求2~3个月可以用Python言语编写 ...

  4. 在linux下python爬虫进程发生异常时自动重启直至正常结束的方法

    在linux下python爬虫进程发生异常时自动重启直至正常结束的方法 参考文章: (1)在linux下python爬虫进程发生异常时自动重启直至正常结束的方法 (2)https://www.cnbl ...

  5. python爬虫如何从一个页面进入另一个页面-Python爬虫信息输入及页面的切换方法...

    实现网页的键盘输入操作 from selenium.webdriver.common.keys import Keys 动态网页有时需要将鼠标悬停在某个元素上,相应的列表选项才能显示出来. 而爬虫在工 ...

  6. python爬虫详细步骤-Python爬虫的两套解析方法和四种爬虫实现过程

    对于大多数朋友而言,爬虫绝对是学习 python 的最好的起手和入门方式.因为爬虫思维模式固定,编程模式也相对简单,一般在细节处理上积累一些经验都可以成功入门.本文想针对某一网页对 python 基础 ...

  7. python爬虫获取方法_小白学python爬虫:2.获得数据

    在上一篇文章我我们已经完成了对网页的分析,包括了:在源码中数据的定位:获取方法(xpath).那么在获得数据之前我们考虑的则是如何获取源码. 接下来我们将学习如何从服务器获得源码. #写在前面&quo ...

  8. 【Python基础】Python爬虫的两套解析方法和四种信息提取方式

    Python爬虫 Author:Iouwill Machine Learning Lab 分享一篇往日旧文章,非常实用. 对于大多数朋友而言,爬虫绝对是学习python的最好的起手和入门方式.因为爬虫 ...

  9. python爬虫网络请求超时_python总urllib,伪装,超时设置,异常处理的方法

    python爬虫之urllib,伪装,超时设置,异常处理的方法 Urllib 1. Urllib.request.urlopen().read().decode() 返回一个二进制的对象,对这个对象进 ...

  10. [python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)

    转载地址:[python爬虫] Selenium常见元素定位方法和操作的学习介绍 一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locat ...

最新文章

  1. C语言文件实验要求,实验教学的目的和要求.doc
  2. 走差异化发展路线思想
  3. 维护一套同时兼容 iOS 6 和 iOS 7,并且能够自动适应两个系统的 UI 风格的代码...
  4. mpython_mPython
  5. FragmentActivity TopFragment
  6. 随想录(由自定义打印函数想到的)
  7. java的程序编码,JAVA编码转换的详细过程
  8. showModalDialog和showModelessDialog中提交form不弹出新窗口
  9. taglib 标签文件
  10. 序列化:ProtoBuf 与 JSON 的比较 !
  11. matlab人工鱼群捕食,Matlab从入门到精通(3)——多目标人工鱼群算法
  12. 网络硬件三剑客的集线器(Hub)、交换机(Switch)与路由器(Router)
  13. 【Pytorch】量化
  14. 容器环境下如何将NuGet包XML文档添加到Swagger
  15. CSMA/CD协议总结最短帧长计算
  16. 安科瑞电气火灾监控系统对分散在建筑内的探测器进行遥测、遥调、遥控、遥信,方便实现监控与管理。
  17. Swift使用代码进行约束
  18. eSIM产业动态(持续更新)
  19. 一根网线,让整栋宿舍楼熄灯后不再吵闹
  20. ATX 690 旋飞换卡飞 7速升级8速 21速升24速 方法

热门文章

  1. Unity内嵌浏览器插件(Android、iOS、Windows)
  2. 杰魔(Geomagic Design)逆向工程软件学习0-产品逆向工程介绍
  3. java 仓库管理_Java仓库管理系统(一)
  4. 手机APP测试需要注意的问题
  5. Awesomium源码及编译
  6. GJB 5000A与GJB 5000B区别
  7. web前端js上传文件
  8. python 定时任务框架APScheduler
  9. CSS面试题汇总(四)
  10. 软件测试常见的用例设计方法