zoukankan      html  css  js  c++  java
  • 爬取赶集网类似数据的几个小技巧

    爬取赶集网数据时发现一些有用的小技巧,不一定用到,先记下来备用。

    一、代理服务器

    有些网站服务器限制访问IP的数量,即1个IP过多的访问网站则会被屏蔽,这是就需要设置多个代理地址,来模拟多IP访问的情况。

    1、  首先从网上获取可使用的代理服务器地址,获取代理地址的网站(IP和端口):

    http://cn-proxy.com/      #  别人给的,打不开页面

    http://http.zhiliandaili.cn/        #自己搜的,也没测试可用性

    2、  使用方法:

    proxy_list = [

    ‘http:// 115.219.113.65: 19303’,

    ‘http:// 61.188.26.120: 20893’,

    ‘http:// 115.219.123.12: 15789’,

    ]

    proxy_ip = random.choice(proxy_list)                # 之前需要import random

    proxies = {‘http’: proxy_ip}

    wb_data = requests.get(url, headers=headers,proxies=proxies)

    二、某字段需要多个同级元素的内容合成

    比如,area字段需要从li元素下的3个a元素的内容来合成,直接取li元素的get_text()会取到多余的内容,则可以使用下面的方法:

    area = list(map(Lambda x:x.text, soup.select(‘ul.det-infor>li:nth-of-type(3)>a’)))

    # select(‘ul.det-infor>li:nth-of-type(3)>a’) 取出3个a元素,map函数实现将3个a元素放进lambda函数中处理,即取得内容,最后用list将对象变成列表

    三、某字段需要某个元素下所有元素的内容合成

    如:div元素中所有子孙级元素的多段文字内容,共同构成所需字段,用stripped_strings处理,即:area = list(soup.select('div.nav')[0].stripped_strings)

    四、对抓取商品详细信息时中断的处理

    若抓取商品详细信息时中断,不知从何开始,可在商品信息表p_info中增加一个字段url;然后做如下处理,之后只爬取没有爬过的商品信息,即rest_of_urls:

    db_urls = [item['url'] for item in url_list.find()]     # 用列表解析式装入所有要爬取的链接

    index_urls = [item['url'] for item in p_info.find()]     #商品详情信息数据库中所有的现存的 url 字段

    x = set(db_urls)                      # 转换成集合的数据结构

    y = set(index_urls)

    rest_of_urls = x-y                        # 相减

    五、对解析过程中报错的容错

    1、  加if else的描述,如:

    title = soup.select('h1.title-name')[0].get_text() if soup.select('h1.title-name') else None

    2、  加try except, 如:

    try:

            item = item_info.find({'url': url})

    except Exception as ex:           # 将异常输出,帮助调试

            print(ex)

  • 相关阅读:
    [Java]用于将链表变成字符串并在元素之间插入分隔符的有用函数“String.join”
    Sql语法树示例 select username, ismale from userinfo where age > 20 and level > 5 and 1 = 1
    [Java]一段尚未雕琢的分词代码
    day44_Oracle学习笔记_03
    day43_Oracle学习笔记_02
    WinXP系统中的Oracle数据库如何以管理员身份登录
    Oracle 10G安装指导
    20个Linux服务器性能调优技巧
    Linux 上使用 Gmail SMTP 服务器发送邮件通知
    Netdata Linux下性能实时监测工具
  • 原文地址:https://www.cnblogs.com/djlbolgs/p/12539861.html
Copyright © 2011-2022 走看看