python爬虫—Task1

Task1

1.概念

1.1 爬虫原理

三步:模拟计算器对服务器发起request请求→接受服务器端的response并提取数据→存储数据

1.2 爬虫流程

四步:构建url列表→循环遍历url列表→提取数据→存储数据
注:URL是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址,和计算机的文件路径一样。

1.3 网页构造

html各个标签的意义,鼠标右键‘检查’或F12可查看网页构造
python爬虫—Task1_第1张图片
需要查询指定内容时:在目标内容上点击右键->检查->再点击右键->copy->copy selector

target = soup.select("#content > div > div.article > ol > li > div > div.info > div.hd > a > span:nth-of-type(1)")#电影名称
#content > div > div.article > ol > li:nth-child(1) > div > div.info > div.hd > a > span:nth-child(1) 复制的某一电影上午名称
#li:nth-child(1)表示每页第一个,去掉nth-child(1)就表示该页所有的;span:nth-child(1)修改为span:nth-of-type(1)

python爬虫—Task1_第2张图片

1.4 requests库

安装第三方库requests(版本Python 3.7),通过这个库可以用python向指定的url发送请求,请求有多种方式,常有的是get和post两种,get请求用于向服务器获取数据,post请求用于向服务器提交表单。

1.5 BeautifulSoup

Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式。推荐使用Beautiful Soup 4, 移植到BS4。

1.6 爬取豆瓣电影 Top 250

具体例子:

import requests
from bs4 import BeautifulSoup

headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
}       #headers是请求头,Chorme浏览器的headers

def URL_list():#构建URL列表
    urls = []
    #根据我们观察到的规律进行构建
    for i in range(0,250,25):
        url = 'https://movie.douban.com/top250?start=' + str(i) + '&filter='
        urls.append(url)
    return urls

def get_data(url):
    res = requests.get(url,headers = headers)#发起请求
    soup = BeautifulSoup(res.text,'lxml')#使用BeautifulSoup的解析库解析
    return soup

def parse_data(soup,data):
    target = soup.select("#content > div > div.article > ol > li > div > div.info > div.hd > a > span:nth-of-type(1)")#电影名称
    #content > div > div.article > ol > li:nth-child(1) > div > div.info > div.hd > a > span:nth-child(1) 复制的某一电影上午名称
    #li:nth-child(1)表示每页第一个;span:nth-child(1)修改为span:nth-of-type(1)
    for i in target:
        data.append(i.get_text()) #得到文字内容,可以使用get_text()
    return data

def main():
    urls = URL_list()
    data = []
    for url in urls:
        soup = get_data(url)#发起请求
        parse_data(soup,data)#解析数据并存进data列表中
    print("-----  豆瓣电影 Top 250  -----")
    for i in range(len(data)):
        print(str(i+1) + " " +"%15s"%data[i])#格式化输出
main()

输出结果
python爬虫—Task1_第3张图片

你可能感兴趣的:(python)