Douban评论爬取----python re模块和request模块使用

学习笔记

整合一下静态爬虫的整体的思路

先获取URL对应网址的html的内容;再获取对应的内容(在这里我使用的是re模块进行解析);将对应的数据进行保存

# 首先说明一下坑,由于没有使用IP代理池,第一次爬取的时候被封了IP

1、首先是得到网页的html内容,因此在这里,直接使用的 request.get(url, headers,timeout)

因此在这里编写代码的时候,

需要给出一个base_url:就是对应网页的总体的url部分,再结合urlencode进行编码的操作

# 获得对应的网页数据
def get_one(num):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'
    }
    params = {
        'start' : str(num),
        # 'limit': '20',
        # 'sort' : 'new_score',
        # 'status' : 'P',
        # 'percent_type' : ''
    }
    base_url = 'https://movie.douban.com/subject/27663984/reviews?'
    url = base_url + urlencode(params)
    try:
        response = requests.get(url,headers=headers,timeout=10)
        if response.status_code == 200:
            return response.text
    except EOFError as e:
        print(e)
        return None

header:对应的头,可以去头部代理寻找自己想要的

params这个数据填写要结合网页的url本身书写:采用键值对的形式

注意很重要的一点就是进行异常处理,根据每一种情况写出对应的错误处理,防止代码运行直接崩溃

status_code == 200的时候去提取网页的html信息

通过这个操作,我们能够得到网页的静态的html内容

2、解析的模块,直接使用re模块,编写正则表达式来进行操作

re.findall() 是得到在 html 中匹配的所有内容信息,再 for 循环得到每一个单独的项

心得:

2.1、将html内容先放到一个本地的txt文件夹下查看,然后对于每一个标签中具体的属性都要在正则表达式中体现出来,不然正则表达式是会陷入循环,无法得到内容。

2.2、每一个内容都使用strip()处理一下,得到干净的字符串

3、将数据写入csv文件

主要是练习写csv文件的操作,

fieldnames是对应的csv的头部,在这里,我们把数据做成一个字典的列表

直接使用csv.DictWriter(f,fieldnames=)得到一个操作csv文件对象,使用writeheader()直接对应的属性

writerows(字典的列表):内容成功写入csv文件


猜你喜欢

转载自blog.csdn.net/skd621/article/details/80536560