一个简单的爬虫

第一次写爬虫,比较弱智。


在人人网看到一篇文章,题材比较敏感,感觉随时会被毙掉,于是想把文章抓下来,一共25页,每页都保存看起来又比较麻烦,所以想做个爬虫抓下来。


文章的结构比较简单,链接也是顺序的,抓取的重点就是不要把乱七八糟的东西都抓过来,省得后期处理会比较麻烦。

代码如下:

#! /user/bin/python3
# -*- coding:utf-8 -*-

from urllib.request import urlopen
from bs4 import BeautifulSoup
import os

for page in range(0,25):
    if page == 0:
        pageNO = "17728017217"
        print(pageNO)
        html = urlopen("http://blog.renren.com/share/367614280/%s"%pageNO)
        bsObj = BeautifulSoup(html,"html.parser") #需要指定解析器,html.parser是python默认的解析器
        for child in bsObj.find("div",{"id":"shareBody"}).children:#text-article-id
            print(child)
            with open('2.html', 'a', encoding='utf8') as f:
                f.write(str(child))
    else: 
        
        pageNO = "17728017217/%s"%page
        print(pageNO)
        html = urlopen("http://blog.renren.com/share/367614280/%s"%pageNO)
        bsObj = BeautifulSoup(html,"html.parser") #需要指定解析器,html.parser是python默认的解析器
        for child in bsObj.find("div",{"id":"shareBody"}).children:
            with open('2.html', 'a', encoding='utf8') as f:
                f.write(str(child))

大概说明一下:

原来的网页结构中,正文部分的div_id是"shareBody";从第二页开始,会在首页链接之后增加"/1…… ",这样一直到24页。

在保存为文件的时候,遇到了数据格式为str,而不是bytes的错误,所以在写文件的时候加上了str()来转换。

另外,创建文件时的这段代码是抄来的,"with open('2.html', 'a', encoding='utf8') as f:"如果去掉这些参数,就会提示错误。

最后,由于抓取的图片为链接,最好将保存的网页保存为pdf。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值