网页手机号抓取程序(作业效果:>showdbsbj580.001GBlocal0.000GBxiaozhu)

优采云 发布时间: 2022-01-20 21:08

  网页手机号抓取程序(作业效果:>showdbsbj580.001GBlocal0.000GBxiaozhu)

  工作效果:

  > 显示数据库

  bj58 0.001GB

  本地 0.000GB

  小猪 0.000GB

  > 使用 bj58

  切换到数据库 bj58

  > 显示采集

  详细信息

  链接

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

  3481

  > db.links.find()[0]

  {

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

  “关联” : ””,

  “标题” : ””

  }

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

  3481

  > db.detailinfo.find()[0]

  {

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

  “电话”:“”,

  “网址”:“”,

  “价格”:“800”,

  "isp" : "联通",

  “卖家”:“王先生”,

  “sell_number”:“”

  }

  >

  笔记和总结

  为*敏*感*词*爬网准备工作流程

  观察页面结构特征

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

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

  设计工作流程

  保证抓取过程的效率

  观察页面结构特征

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

  有些页面不需要爬取

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

  设计工作流程

  两只爬行动物

  从列表页面爬取所有产品的 URL 并将它们存储在数据库中的表中

  获取商品url,获取详情页,爬取需要的信息,存入另一个表

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

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

  获取类别/频道

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

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

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

  爬取分类列表页面中商品详情的url

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

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

  从元素结构来看

  爬取商品详情

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

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

  从具体内容来看

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

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

  概括

  CSS

  第一页有内容要跳过

  其他页面没有这个问题

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

  如果数 == 1:

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

  别的:

  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

  打印区

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

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

  "

  联通

  A B C D

  "

  去掉两边的空格“”,删除字符串中间的“”和\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人工客服


线