今天外面天气有些古怪,女朋友明天又要考试,整整一天都在图书馆背书。遇到这种情况,像我这么懒的人,肯定就只有在宿舍玩游戏了。 可是,,,玩游戏真的很无聊耶,我都玩腻了。所以,写完线代作业,只好又来了解一下数据结构和python。这波理由很充分,哈哈哈哈(更多优质内容,请关注公众号:生物信息与python)

本来是想来试着爬一下雷军的微博信息的。 可是微博,根本就不给真正的url··· (大公司嘛,程序员多,可以为所欲为) 上知乎逛了一圈,要用cookies保存登陆信息,然后调用json库,模拟人类点击浏览器?!然而我http协议都还没有了解,就让我去找cookies?!我拒绝!

趁着无聊,就了解了一下http协议,以及浏览器工作的原理。 于是乎知道了一串名词:TCP三次握手,ACK,syn包,TCP/IP协议,DNS,主机名,状态行,丢包etc(很社会···列在这里其实是想当一个名词解释,大家自己去了解一下,如果需要,我也可以些篇介绍这些概念的文章) 想来想去,还是拿58同城来练练手。据说武汉房价又涨了,所以多看看房子信息,可以壮壮胆嘛(去TMD壮胆····我想睡觉)

废话说的有点多了,现在进入正题。

首先,还是和之前一样,打开58同城的网页,打开开发者选项F12,进行网页分析:

我个人喜欢用记事本复制代码,帮助自己来分析:

具体分析的过程,我就不详细说了,专栏的前几篇都有仔细分析,大家可以看一下:我爱小徐子:(python小白必看!)python爬虫详细讲解:静态单网页的内容爬取 爬取对象:百度贴吧湖北大学吧​zhuanlan.zhihu.com

今天遇到的一个主要问题,还是之前在文章中写到的,对标签使用text.strip()方法时,无法提取出来标签中的文字信息,总是报错。 所以,我今天对单网页进行了一个测试,测试代码如下:

In [1]: import requests

In [2]: from bs4 import BeautifulSoup

In [3]: import pandas as pd

In [4]: from pandas import DataFrame

In [5]: import numpy as np

In [6]: head={}

In [7]: head['User-Agent']="Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"

In [8]: url="http://wh.58.com/ershoufang/pn3/"

In [9]: r=requests.get(url,headers=head)

In [10]: r=r.text

In [12]: soup=BeautifulSoup(r,'lxml')

In [13]: Tags=soup.find_all('li')

In [14]: title_list=[]

In [15]: http_list=[]

In [16]: for li in Tags:

...: try:

...: li

...: try:

...: http_list.append(li.find('a')["href"])

...: title_list.append(li.find('h2',attrs={"class":"title"}).text.strip())

...: except:

...: continue

...: except:

...: continue

在循环之中加上了两层异常处理机制,设置head头的目的是,防止服务器发现采取反爬措施(之后就会发现,我这点技术,人家58一眼就能识破)

加了异常处理机机制的目的是,防止标签中没有信息时,而出现报错。 异常处理机制使得遇到空白标签之后,循环仍然可以正常进行。

测试截图如下:http列表和title列表均显示正常!

所以这就说明我们的方法没有问题。

封装函数进行多网页爬取,代码如下:

C:\Users\13016>python -mIPython

Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)]

Type 'copyright', 'credits' or 'license' for more information

IPython 6.3.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import requests

In [2]: import pandas as pd

In [3]: from bs4 import BeautifulSoup

In [4]: from pandas import DataFrame

In [5]: import numpy as np

In [6]: def get_url(url):

...: r=requests.get(url)

...: r.encoding=r.apparent_encoding

...: return r.text

In [7]: def get_data(html,http_list,title_list,site_list,area_list,price_list):

...: soup=BeautifulSoup(html,'lxml')

...: theme=soup.find('ul',attrs={"class":"house-list-wrap"})

...: Tags=theme.find_all('li')

...: for li in Tags:

...: try:

...: li

...: try:

...: http_list.append(li.find('a')["href"])

...: title_list.append(li.find('h2',attrs={"class":"title"}).text.strip())

...: site_list.append(li.find('span').text.strip())

...: area_list.append(li.find('p',attrs={"class":"baseinfo"}).text.strip())

...: price_list.append(li.find('div',attrs={"class":"price"}).text.strip())

...: except:

...: continue

...: except:

...: continue

...:

In [8]: #设置休眠时间,防止网站反爬

In [9]: import time as sleep

In [10]: http_list=[]

In [11]: title_list=[]

In [12]: site_list=[]

In [14]: area_list=[]

In [15]: price_list=[]

In [16]: for i in range(1,11):

...: url='http://wh.58.com/ershoufang/pn'+str(i)+'/'

In [17]: for i in range(1,11):

...: url='http://wh.58.com/ershoufang/pn'+str(i)+'/'

...: html=get_url(url)

...: grt_data(html,http_list,title_list,site_list,area_list,price_list)

...: print('正在爬取第i页'%i)

...: sleep(3)

sleep的作用时休眠循环,防止被服务器发现,是“非人类”在进行操作。

大功告成, 本来以为只用等电脑给我爬取数据的:可以刚刚爬取了一页信息,就出现了这个情况

我的爬虫,还是经过我处理的爬虫,还是被58给发现了。。。 好吧,我承认,58也是个大公司。

最后看了一下,爬取的数据:

1秒钟,240条数据,难怪被封。(只能是自我安慰了,因为验证码模拟登陆我还不会)

源代码我上面给出了一部分,朋友们可以自己分析,如果需要爬虫完整源代码,和爬取的房价信息文件的朋友,请关注公众号:生物信息与python,点击python即可获得。更多优质内容,将会在公众号和大家分享。

python爬取58同城房子发布的手机号码_python爬虫:爬取58同城武汉地区商品房信息(最后碰到了58同城的反爬机制,吓得我不敢说话···)...相关推荐

  1. python爬取58同城房子发布的手机号码_爬虫(成都58同城所有房价,Python实现)

    Python实现爬虫(爬取58同城所有房价) 程序发布日期2018-9-25(如果以后不能使用了,就需要更改解析方式.) github博客传送门 csdn博客传送门 爬虫文件(Python实现)-爬取 ...

  2. python爬取大众点评评论_python爬虫抓取数据 小试Python——爬虫抓取大众点评上的数据 - 电脑常识 - 服务器之家...

    python爬虫抓取数据 小试Python--爬虫抓取大众点评上的数据 发布时间:2017-04-07

  3. python爬取app、返回的是加密数据_Python 逆向抓取 APP 数据

    今天继续给大伙分享一下 Python 爬虫的教程,这次主要涉及到的是关于某 APP 的逆向分析并抓取数据,关于 APP 的反爬会麻烦一些,比如 Android 端的代码写完一般会进行打包并混淆加密加固 ...

  4. python爬取网易云音乐飙升榜音乐_Python爬虫实战,30行代码轻松爬取网易云音乐热歌榜...

    在开始讲解思路之前,我们首先了解下网络状态码,为什么要看这个呢?以后你会回来感谢我的,嘻嘻! 一般网络状态有以下几种: 200(成功) 服务器成功处理了请求.一般来说,这意味着服务器提供所请求的页面, ...

  5. python爬虫爬取股票软件数据_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储(转载)...

    完整代码 实际上,整个事情完成了两个相对独立的过程:1.爬虫获取网页股票数据并保存到本地文件:2.将本地文件数据储存到MySQL数据库.并没有直接的考虑把从网页上抓取到的数据实时(或者通过一个临时文件 ...

  6. python抓取数据库数据_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储...

    Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...

  7. python爬虫实现股票数据存储_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储!...

    Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...

  8. python唐诗分析综合_Python爬虫抓取唐诗宋词

    一 说明 Python语言的爬虫开发相对于其他编程语言是极其高校的,在上一篇文章 爬虫抓取博客园前10页标题带有Python关键字(不区分大小写) 的文章中,我们介绍了使用requests做爬虫开发, ...

  9. python爬虫资源大全_Python爬虫抓取纯静态网站及其资源(基础篇)

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:程序员宝库 **( 想要学习Python?Python ...

  10. python爬虫app步骤_Python爬虫抓取手机APP的传输数据,python爬虫抓取app

    Python爬虫抓取手机APP的传输数据,python爬虫抓取app 大多数APP里面返回的是json格式数据,或者一堆加密过的数据 .这里以超级课程表APP为例,抓取超级课程表里用户发的话题. 1. ...

最新文章

  1. 用netty实现zcool_Netty 如何玩转内存使用
  2. 如何用 Slack 和 Kubernetes 构建一个聊天机器人?| 附代码
  3. python可视化水平箭头_Python交互图表可视化Bokeh:2. 辅助参数
  4. Spring 处理过程分析
  5. php 统计目录大小,PHP 统计目录大小
  6. python类:magic魔术方法
  7. 第003讲 无序列表 有序列表 框架
  8. 彻底卸载Solidworks及Electrical以避免重新安装时出现1603、注册表权限错误或Installer未按预期运行
  9. Python利用 Django开发网站
  10. 今天你对我爱搭不理, 明天我让你高攀不起
  11. PostGIS 爆管分析之找出上游阀门
  12. 制作加载从模糊到清晰的图片
  13. powermockito测试私有方法_03 增强测试: 静态、私有方法处理
  14. 学生课程成绩信息实体表设计mysql_数据库综合实验--设计某高校学生选课管理系统...
  15. Kappa(cappa)系数只需要看这一篇就够了,算法到python实现
  16. import 模块大小写问题
  17. windows cmd sqlplus访问Oracle数据库显示?胧淙胗没? SP2-0306: ?∠钗扌А?的问题
  18. MAP 推荐系统 Mean Average Precision
  19. 《程序员的自我修养》后感【1】
  20. GIS与地质灾害评价——坡度分析

热门文章

  1. 编译XML-Parser报错
  2. 逻辑卷、物理卷、卷组
  3. linux下Eclipse连接真机调试Android应用程序
  4. visualcreators.com公司产品过滤漏洞!
  5. 单表查询之选择查询 + 多表查询(2020.3.20 )
  6. mysql 全连接_mysql 实现全连接
  7. Java集合的所有知识点详解,偏通俗易懂,集合笔记
  8. C# KeyUp事件中MessageBox的回车(Enter)键问题
  9. ASP.NET 参数传递,长度限制,及使用注意事项。
  10. 对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(3)