【小白记录】python爬取us news大学排名和京东李子柒螺蛳粉评论

一、Python爬虫

Python爬虫是一种使用 Python 编程语言实现网络数据爬取的工具。Python 爬虫可以通过访问网页、解析 HTML、提取数据和保存数据等步骤来自动化地收集网络上的信息。它由调度器、URL管理器、网页下载器、网页解析器以及应用程序组成。

二、爬取us news大学排名

import pandas as pd
import requests
from bs4 import BeautifulSoup
# 搭建数据爬取环境
url='https://www.compassedu.hk/usnews'
r=requests.get(url)
print(r)
r.encoding=('UTF-8')
#防止产生乱码
htmls=r.content 
#提取网页内容
soup=BeautifulSoup(htmls,'lxml')
 #lxml进行网页解析
soup
# 然后使用BeautifulSoup4进行解析
n=soup.find_all("div",attrs={'class':'cname line-one'})
n
name=[]
for i in soup.find_all('div',attrs={'class':'cname line-one'}):
    name.append(i.getText())
name
#读取学校名称
rank=[]
for i in soup.find_all("div",attrs={'class':'rank-tr1'}):
    if i.getText().isdigit():
        rank.append(i.getText())
        #读取学校排名
        us_news_ranking={'排名':rank,'学校名称':name}
        us_news_ranking=pd.DataFrame(us_news_ranking)
        us_news_ranking

问题:报错ValueError: All arrays must be of the same length

问题解释:网络搜索发现为使用DataFrame(dict) 来用dict构建DataFrame时,key会变成列column,(list-like)values会变为行row,每个values中的list长度不一致,就会产生这个错误。

方法:对代码一段一段运行,发现在读取排名时将排名一起读入,导致输出时rank格式不统一,对比HTML中两个描述的不同点,将其修改为唯一特征

理解:这种Python读取对单组,在网页编程中有唯一特征代码有用,对无唯一特征代码的数据抓取没有作用,大量抓取多组目标代码量较大。

三、京东李子柒螺蛳粉评论

import requests
#请求和页面抓取
import time
#设置抓取Sleep时间
import random
#生成乱序随机数
import re
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import jieba as jb
#关键词提取
import jieba.analyse
import csv
from pprint import pprint
for page in range(0,20):
    print(f'正在采集第{page}页的内容')
    url='https://api.m.jd.com/'
    #网站地址
    data={'appid': 'item-v3',
'functionId': 'pc_club_productPageComments',
'client':' pc',
'clientVersion': '1.0.0',
't': '1712929370430',
'loginType':'3',
'uuid': '181111935.667197733.1712929254.1712929254.1712929255.1',
'productId': '10077305381360',
'score':'0',
'sortType': '5',
'page': page,
'pageSize': '10',
'isShadowSku': '0',
'rid': '0',
'fold': '1',
'bbtf': '',
'shield': ''}
#页面特征
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'}
#设置请求中头文件的信息
    response=requests.get(url=url,params=data,headers=headers)
    print(response.json()) 
    f=open('李子柒.csv',mode='a',encoding='utf-8-sig',newline='')
    #建立李子柒.csv文件
    csv_writer=csv.DictWriter(f,fieldnames=['昵称','商品','评分','内容','plus会员'])
    csv_writer.writeheader()
    #设置表头
    for index in response.json()['comments']:
        if index['plusAvailable']==201:
            vip='是'
        else:
            vip='否'
        dit={'昵称':index['nickname'],'商品':index['productColor'],'评分':index['score'],
         '内容':index['content'].replace('\n',''),'plus会员':vip
        }
        csv_writer.writerow(dit)
        #写入内容

data部分内容获取

问题:ModuleNotFoundError: No module named 'jieba'

问题解释:没有找到jieba的库

方法一:将编译器Python版本与电脑环境Python版本一致

 结果:失败,错误不变

方法二:在Anacond Prompt中输入代码conda install jieba

conda install jieba

结果:无法正常运行

方法三:在cmd中输入代码 pip install jieba下载jiaba库

pip install jieba

 结果:开始下载,成功后代码成功运行

 四、其他学习

本周还进行了英特尔OpenVINO工具套件的安装和官方初级课程的学习,已对该套件有了基础的认识和部分功能的了解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值