栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python爬虫实战用pyquery爬取豆瓣top250(超详细)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python爬虫实战用pyquery爬取豆瓣top250(超详细)

目录

一、哆嗦几句

二、库的安装

三、爬取思路

​(一)、获取网页

(二)、解析网页

  (三) 、存储数据

(四)、整合代码

四、完整代码

五、运行结果


一、哆嗦几句

        pyquery相对与xpath、beautifulsoup、re比较简单,而且支持的css选择器功能比较强大。pyquery和jqueryd的语法比较相似。所以选择puquery效率比较高。话不多说,开始搬砖。

二、库的安装

        用到的库有:pyquery、time、time、random。安装方法:pip install 库

三、爬取思路

(一、获取网页
def get_one_page(url):
#try except进行异常处理    
    try:
        headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"}
        response=requests.get(url, headers=headers) 
        if response.status_code==200: # 如果状态码等于200,200代表响应成功
            return response.text # 返回网页
        else:
            return None # 返回空
    except Exception:
        return None

(二 )、解析网页

首先打开豆瓣电影 Top 250,按F12进入开发着模式,点击top250,如下图:

 其次按ctrl+F搜索肖生克的救赎,定位到对应的标签,如下图:

最后 找到需要提取标签,对应的标签在grid_view标签下,只要定位到grid_view标签,就可以提取。如图所示:

 代码提取标签如下:

def parse_one_page(html):
    doc=pq(html) #对html进行初始化
    print(doc)
    get_all_html=doc('.grid_view') #获取grid_view标签下面的所有的节点
    for i in get_all_html.items(): #用items()遍历多个节点
        txt=i.text() #获取所有的文本
        return txt #返回txt

(三)、存储数据
def sava_data(txt):
    with open('top250-2.txt','a+',encoding='utf-8') as f:
        f.write(txt)

(四、整合代码
def main(offset):
    url='https://movie.douban.com/top250?start='+str(offset)+'&filter=' #对网页进行翻页
    html=get_one_page(url) #把url参数传给get_one_page函数,然后赋给html
    try:
       for item in parse_one_page(html):
        sava_data(item)
    except:
        return None
    
if __name__ == '__main__': #函数内置函数
    for i in range(10):
        main(offset=i*25)
        time.sleep(random.randint(1, 6)) #生成随机数,间隔访问,以免ip被封

四、完整代码
from pyquery import PyQuery as pq
import requests
import time
import random
#获取网页
def get_one_page(url):
#try except进行异常处理    
    try:
        headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"}
        response=requests.get(url, headers=headers) 
        if response.status_code==200: # 如果状态码等于200,200代表响应成功
            return response.text # 返回网页
        else:
            return None # 返回空
    except Exception:
        return None
    
#解析网页
def parse_one_page(html):
    doc=pq(html) #对html进行初始化
    print(doc)
    get_all_html=doc('.grid_view') #获取grid_view标签下面的所有的节点
    for i in get_all_html.items(): #用items()遍历多个节点
        txt=i.text() #获取所有的文本
        return txt #返回txt
        
#存储数据
def sava_data(txt):
    with open('top250-2.txt','a+',encoding='utf-8') as f:
        f.write(txt)
   
#整合代码
def main(offset):
    url='https://movie.douban.com/top250?start='+str(offset)+'&filter=' #对网页进行翻页
    html=get_one_page(url) #把url参数传给get_one_page函数,然后赋给html
    try:
       for item in parse_one_page(html):
        sava_data(item)
    except:
        return None
    
if __name__ == '__main__': #函数内置函数
    for i in range(10):
        main(offset=i*25)
        time.sleep(random.randint(1, 6)) #生成随机数,间隔访问,以免ip被封

五、运行结果

              

  

         

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/664489.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号