python爬虫技术

1 篇文章 0 订阅
1 篇文章 0 订阅

首先感谢陈堰平老师这几天辛苦的教学,不管是助教还是学员,在您的课堂上都收获良多!!我借助陈老师总结的思维导图展开介绍一下爬虫

 

首先要明确一点,爬虫是从网站中提取到我们需要的数据,而网站是程程序员写的,每个网站的使用的语言、每个人代码的习惯、每个数据在网站中的位置肯定不会是一模一样的,我们需要根据网站的情况不断更改我们的爬虫

一、网页基础

简单说一下静态网页和动态网页对于爬虫的区别,静态网页中的全部内容,都在网页的源代码中,可以直接从源代码里获取,但是动态网页的内容,需要服务器根据操作发送给浏览器

区分网页类型,可以在网页的源代码中搜索我们在浏览器界面里看到的内容,如果能找到内容,就是静态网页

明确了网页类型,还需要区分网页向服务器发送请求的方式,主要有get和post两种方式,区分的方法见下图

二、不同情况网站的代码

1.第一个是静态网站的方法,我是定义了一整个函数,这是最后的结果,但是过程中需要一步步执行保证代码的准确性,包括列表推导式中的内容也是一步一步添加上的,要保证代码的准确性才能最后定义函数。

#get方式的静态网站

#载入必要的包
import requests as req
from bs4 import BeautifulSoup
import pandas as pd

#定义爬虫函数
def movie_comment(x) :   
    names = []
    star = []
    date = []
    comments = []
    support = []
    for j in range(0,x,20) :
        #url是网站地址
        url = "https://movie.douban.com/subject/26979199/comments?start="+str(j)+"&limit=20&sort=new_score&status=P"
        
        #get函数获取网站下的所有元素
        movies_0 = req.get(url).content

        #BeautifulSoup解析网站的元素
        movies = BeautifulSoup(movies_0,'html.parser')
        
        #提取我们需要的网站内容,find_all函数查找所有span模块,并且要求了模块的属性        
        #{'class':'comment-info'}
        names = names + [i.a.string for i in movies.find_all('span',{'class':'comment-info'})]
        star = star + [i.find_all('span')[1].get('class')[0] for i in movies.find_all('span',{'class':'comment-info'})]
        date = date + [i.string.strip().strip('\n') for i in movies.find_all('span',{'class':'comment-time'})]
        comments = comments + [i.string for i in movies.find_all('span',{'class':'short'})]
        support = support + [i.string for i in movies.find_all('span',{'class':'votes'})]
    
    #把我们需要的变量输入到文本框,指定列名
    df=pd.DataFrame({
    'names': names ,
    'star' : star ,
    'date' : date ,
    'comments' : comments , 
    'support' : support
    })

    #文件写出到csv
    df.to_csv('movies_comment.csv',index=False)
    return df
#调用爬虫函数
movie_comment(140)

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值