爬虫小白踩坑记-----爬虫初探

首先是爬取网上的数据,需要明确一下思路:

1. 抓取原网页,其实就是download网页源代码,至于怎么download,有多种方式,因为是试手程序,所以我选择了request,requests库是一个非常实用的HTPP客户端库,是抓取操作最常用的一个库。而且主要针对开放网页,不需要登录。

2. 网页解析,按需要将内容提取出来,主要就是将HTML标签去掉,也是有很多种方式,可以使用BeautifulSoup,XPath、lxml等库,我主要使用正则表达式来匹配需要的内容,提取内容还不错。

3. 存储数据,根据自己需求及数据量选择

 

遇到的问题记录:

1. 一般网页都是可以爬取的,没有反爬机制,常见的会通过user-agent来控制访问,其他的反爬机制目前未涉及,user-agent能够使服务器识别出用户的操作系统及版本、cpu类型、浏览器类型和版本。很多网站会设置user-agent白名单,只有在白名单范围内的请求才能正常访问。所以在我们的爬虫代码中需要设置user-agent伪装成一个浏览器请求。有时候服务器还可能会校验Referer,所以还可能需要设置Referer(用来表示此时的请求是从哪个页面链接过来的),如下所示:

headers = {
            'Host': 'top.baidu.com',
            'Referer': 'http://top.baidu.com/news?fr=topindex',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'
        }

爬取简单网页还是挺简单的,但在批量爬取网页的时候,突然出错了,排查了好半天,原来是读取url多了换行符,蠢哭。

                                             

2. 解析网页特别麻烦,因为网页结构不一定都一样,所以要做到通用性应该很难,第三方库和正则都用了,最后选择了正则,更加灵活一点。

    str1 = '<body>'
    str2 = '</body>'
    webdatas = webdata[webdata.index(str1):webdata.index(str2)]
    pre = re.compile('>(.*)<')
    datas = ''.join(pre.findall(webdatas))
    str_first = re.sub('<.*?>', "", datas)  # 匹配所有html标签并用“”代替
    datas = str_first.replace('/n', "")

这样只是去除了大部分的html标签,还需要根据实际情况增加正则条件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值