崔庆才python3爬虫 豆瓣_0基础学Python3爬虫

一个月当中利用碎片化的时间刷了一遍《Python编程:从入门到实践》的第一部分,项目部分,项目1刷了一半,项目2全刷完了,项目3的web项目目前不想刷。不得不说这是本非常适合0基础同学学习python的书。关于爬虫,目前正在刷崔庆才老师的《Python3网络爬虫开发实践》,这本书关于爬虫的知识非常丰富翔实,崔老师个人博客有部分内容开源。另外还了解了一些HTML和CSS的内容(html文件结构,css选择器等),在以上2本书和搜索引擎和各类同好的帮助下今天写了个简单的爬虫小程序:爬取豆瓣250电影。感谢豆瓣对爬虫的包容!

win10下解析网页源代码时如果出现错误:Unicodedecoderror:'gbk'……啥的,我的解决方法如下:

import io

import sys

sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')

mac osx系统下目前没碰到这种情况。

通关继续观察发现,每个网址的start=后面的数字每次递增25.

查看网页源代码发现,一部电影的信息都包含在 一对

标签当中。

本次采用pyquery库来解析。

from pyquery import PyQuery as pq

import json

import time

def get_one_page(url):

headers = {

'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36'

}

html = pq(url=url,headers=headers)

return html

def write_to_file(html):

lis = html('.grid_view li').items()

for li in lis:

text = 'Index: {}, Title: {},Score: {}'.format(

li.find('em').text(),

li.find('span.title').text(),

li.find('span.rating_num').text()

)

with open('result.txt','a',encoding='utf8') as f:

f.write(text + '\n')

def main(start):

url = 'https://movie.douban.com/top250?start={}&filter='.format(start)

html = get_one_page(url)

write_to_file(html)

if __name__ == '__main__':

for i in range(0,250,25):

main(start=i)

#延时一秒钟,防止访问速度过快

time.sleep(1)

……

豆瓣250,你看过几部呢?