网页手机号抓取程序(作业效果:作业项目地址笔记(小结为*敏*感*词*爬取))

优采云 发布时间: 2022-04-09 15:36

  网页手机号抓取程序(作业效果:作业项目地址笔记(小结为*敏*感*词*爬取))

  工作效果:

  > show dbs

bj58 0.001GB

local 0.000GB

xiaozhu 0.000GB

> use bj58

switched to db bj58

> show collections

detailinfo

links

> db.links.find().count()

3481

> db.links.find()[0]

{

"_id" : ObjectId("574a689ee002824353704eaf"),

"link" : "http://short.58.com/zd_p/2e7875cf-cdd8-4eaa-baaf-1ac1b111e6d8/?target=dc-16-xgk_fegvcjemg_39429002744563q-feykn&end=end26096779100482x.shtml&psid=169068509191954188512724262&entinfo=26096779100482_0",

"title" : "18518313456"

}

> db.detailinfo.find().count()

3481

> db.detailinfo.find()[0]

{

"_id" : ObjectId("574abe78e00282487d8dd6e7"),

"telephon" : "18600141414",

"url" : "http://short.58.com/zd_p/2e7875cf-cdd8-4eaa-baaf-1ac1b111e6d8/?target=dc-16-xgk_fegvcjemg_39429002744563q-feykn&end=end26096779100482x.shtml&psid=169068509191954188512724262&entinfo=26096779100482_0",

"price" : "800",

"isp" : "联通",

"seller" : "王先生",

"sell_number" : "18518313456"

}

>

  工作项地址

  笔记和总结为*敏*感*词*爬网准备工作流程

  以前只在特定页面上抓取信息

  但是,如果是网站的*敏*感*词*爬取,会涉及到几个页面,而且程序需要通用性,爬取需要的页面

  保证抓取过程的效率

  观察页面结构特征

  不同的页面会有不同的内容结构。例如,有些具有独特的元素,因此某些页面无法使用同一组爬虫进行爬取。

  有些页面不需要爬取

  手动指定要爬取的页数后,需要让程序识别分页元素来判断是否是最后一页,避免最后一页没有信息,比如直接跳过。

  设计工作流程

  将爬取任务分成两个爬虫的原因是,在做*敏*感*词*数据爬取的时候,最好一次只做一件事,这样可以提高爬虫的稳定性

  当您可能遇到问题时,这是工作时间和调试之间的平衡

  从主页获取所有类别/频道的信息

  构造分类列表页面的url:常用前缀、频道、发布者类型、页码

  url = "{}{}/0/pn{}".format()

  如果是批量访问,最好在访问之间留一点时间。如果 网站 压力好,没关系

  对于分页结束需要停止的页面,判断是否有td标签,find('td','t'),如果有,继续,否则,停止

  从元素结构来看

  每次有请求,浏览量都会变化,所以不需要记录

  访问的url可能会返回404,因为交易已经成功下线。一个页面的js脚本链接收录404

  从具体内容来看

  no_longer_exist = '404' in soup.find('script', type='').get('src').split('/')

  soup.prettify() 可以使打印出来的 HTML 内容更具可读性

  概括

  第一页有内容要跳过

  

# 精选号码,不想抓取的内容

# 需要获取 url 的内容

  其他页面没有这个问题

  

# 需要获取 url 的内容

  没有办法直接通过CSS选择器进行过滤,只能判断是否是首页,然后区别对待:

  if num == 1:

boxlist = detail_soup.select("div.boxlist div.boxlist")[1]

else:

boxlist = detail_soup.select("div.boxlist div.boxlist")[0]

  

海淀

" -

" 皂君庙

  获取所有子元素的内容,子元素之间的内容

  area_data = detail_soup.select("span.c_25d")

area = list(area_data[0].stripped_strings) if area_data else None

print area

[u'\u897f\u57ce', u'-', u'\u897f\u56db']

  但以下情况不能这样处理:

  

"

18518313456

联通

ABCD

"

  去掉两边的空格“”,删除字符串中间的“”和\t,将多个\n替换为一个\n,然后用\n分隔成一个列表

  number = list(detail_soup.select("h1")[0].stripped_strings)[0]

info_list = number.replace('\t','').replace(' ',"").replace('\n\n\n','\n').split("\n")

# print 'number= ',info_list[0]

# print 'isp= ', info_list[1]

  “蟒蛇食谱”

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线