首页 > 其他分享 >py爬虫

py爬虫

时间:2023-12-11 23:00:13浏览次数:24  
标签:format list py list1 爬虫 爬取 soup print

(1)请用requests库的get()函数访问如下一个网站20次,打印返回状态,text()内容,计算text()属性和content属性所返回网页内容的长度。

import requests
from bs4 import BeautifulSoup
url='https://baidu.com'
for i in range(20):
    try:
        r=requests.get(url)
        print(r.status_code)
    except:
        print(404)
r=requests.get(url)
r.encoding='utf-8'
print("text()获取的内容为:",end="")
print(r.text)
print('---------------------')
print("content()获取的内容:",end="")
print(r.content)
print("-"*20)
soup=BeautifulSoup(r.text)
print("soup的类型为:{}".format(type(soup)))
print("-"*20)
str1=soup.find_all('title')
str2=soup.find_all('input')
str3=soup.find_all('a')
str4=str(str1)+str(str2)+str(str3)
print("title标签的内容{}".format(str1))
print("input标签里面的内容{}".format(str2))
print("a标签里卖的内容{}".format(str3))
print("获取到的内容的长度{}".format(len(str4)))

3)这是一个简单的html页面,请保持为字符串,完成后面的计算要求。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
<h1>我的第一个标题</h1>
<p id="first">我的第一个段落。</p>
</body>
<table border="1">
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table>
</html>

要求:a 打印head标签内容和你的学号后两位‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪

b,获取body标签的内容‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

c. 获取id 为first的标签对象‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

d. 获取并打印html页面中的中文字符

import re

import requests
from bs4 import BeautifulSoup
text='''<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
<h1>我的第一个标题</h1>
<p id="first">我的第一个段落。</p>
<table border="1">
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table>
</body>
</html>'''
soup=BeautifulSoup(text)
print(type(soup))
print("-"*30)
print("head标签的内容为:{}".format(soup.head))
print("-"*30)
print("body标签的内容为:{}".format(soup.body))
print("-"*30)
print("id为first的标签对象:{}".format(soup.p))
print('-'*30)
print('页面里面的所有中文字符为:{}'.format(re.findall('[\u1100-\uFFFDh]+?',soup.text)))

(4) 爬中国大学排名网站内容,‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

https://www.shanghairanking.cn/rankings/bcur/201811‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭

要求:(一),爬取大学排名(学号尾号1,2,爬取年费2020,a,爬取大学排名(学号尾号3,4,爬取年费2016,)a,爬取大学排名(学号尾号5,6,爬取年费2017,)a,爬取大学排名(学号尾号7,8,爬取年费2018,))a,爬取大学排名(学号尾号9,0,爬取年费2019,)

# e23.1CrawUnivRanking.py
import re
import pandas as pd
import requests
from bs4 import BeautifulSoup

allUniv = []


def getHTMLText(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()
        r.encoding = 'utf-8'
        return r.text
    except:
        return ""


def fillUnivList(soup):
    soup.encode('utf-8')
    data = soup.find_all('tr')
    list1=[]
    for tr in data:
        ltd = tr.find_all('td')
        if len(ltd) == 0:
            continue
        singleUniv = []
        for td in ltd:
            temp=re.findall('[\u4e00-\u9fff]+' ,str(td))
            if td.string!=None and td.string!="[]":
                singleUniv.append(td.string)
            if temp!=[]:
                if type(temp)==list:
                    str1=''
                    for i in temp:
                        str1+=i
                    singleUniv.append(str1)
        allUniv.append(singleUniv)
    return allUniv


def printUnivList(num):
    print("{:^5}{:^4}{:^5}{:^10}{:^10}".format("排名", "学校名称", "省市", "类型", "总分"))
    for i in range(num):
        u = allUniv[i]
        u[0]=u[0][29:31]
        u[1]=u[1][:4]
        u[4]=u[4][25:31]
        print("{:^5} {:^4}{:^5}{:^10}{:^10}".format(u[0], u[1], u[2], u[3], u[4]))
def main(flag):
    url = 'https://www.shanghairanking.cn/rankings/bcur/201711'
    html = getHTMLText(url)
    soup = BeautifulSoup(html, "html.parser")
    list1=fillUnivList(soup)
    if flag==0:
        printUnivList(10)
    else:
        return  list1
#  定义一个函数,将里面的嵌套列表的第一个元素取出
def combination(list1,count):
    list2=[]
    for i in list1:
        list2.append(i[count])
    return list2
main(0)
list1=main(1)
#  定义一个函数,处理一下获取到的数据
def deal_data(list1):
    list_1=combination(list1,0)
    list_2=combination(list1,1)
    list_3=combination(list1,2)
    list_4=combination(list1,3)
    list_5=combination(list1,4)
    data = pd.DataFrame({
        "排名": list_1,
        "学校名称": list_2,
        '省市': list_3,
        '类型': list_4,
        '总分': list_5
    })
    return data
data=deal_data(list1)
data.to_csv('University_grade.csv',index=False)

 

标签:format,list,py,list1,爬虫,爬取,soup,print
From: https://www.cnblogs.com/shangyishui/p/17895811.html

相关文章

  • python的 __enter__ 和 __exit__方法,上下文管理器
    在Python中,类并没有专门的exit方法。但是,如果你想在对象生命周期结束时执行某些操作,你可以使用特殊的方法__enter__和__exit__,这与Python上下文管理器(ContextManager)相关。__enter__方法:当进入with代码块时,__enter__方法会被调用。__exit__方法:当退出with......
  • 软件测试/人工智能|Python数据可视化神器pyecharts教程(一)
    前言在很多时候,枯燥的数字并不能很直观的展示地域的差别,比如一个企业,想要分析产品在国内的销售情况,报表可能并不能最直接的展示差异,而一个结合地图的展示,就会直观得多,更便于大家去看到差距,更利于决策。当然,除了做商业决策,将数据与地图结合,也更便于我们展示诸如人口密度,经济总量等数......
  • 粉碎文件代码 python
    粉碎文件是指将文件彻底删除,使其无法恢复。在计算机领域,我们通常使用编程语言来实现该功能。本文将介绍如何使用Python编程语言来粉碎文件,并提供相应的代码示例。什么是文件粉碎?在计算机中,当我们删除一个文件时,实际上只是将该文件从文件系统的文件目录中删除,并不是真正地将文件内......
  • 读取pkl python
    如何读取pkl文件作为一名经验丰富的开发者,很高兴能够帮助你解决关于读取pkl文件的问题。在本文中,我将向你介绍读取pkl文件的步骤和相应的Python代码,并提供详细的解释。让我们开始吧!读取pkl文件的流程在开始编写代码之前,先让我们了解一下整个读取pkl文件的流程。下面是一个简单的......
  • 盘点一个Python自动化办公的实战问题
    大家好,我是皮皮。一、前言前几天在Python白银交流群【东哥】问了一个Python自动化办公的问题,一起来看看吧。问题描述:大佬们,这个Excel表格中,针对C列到N列,我想要取每一行的数字,最后输出一句话,如针对第二行数据的话最后生成:该订单对应7个J01140300003、27个J01140300006;第三行数据......
  • 软件测试/人工智能|Python数据可视化神器pyecharts教程(二)
    前言上一篇文章,我们介绍了如何使用pyecharts展示带地图的数据分析结果,并且实际绘制了省份图和全国城市图,用于展示数据。本文我们继续来使用pyecharts绘制以地图为基础的图像。绘制分段图但是我们在绘制全国的图形时,没有考虑考虑到将不同级别的数据进行分层,比如每一段的颜色不一......
  • 软件测试/人工智能|Python数据可视化神器pyecharts教程(三)
    前言前面两篇文章,我们主要介绍了绘制基本的地图以及数据展示图,其实我们可以在地图上绘制更多类型的图形,本文就来继续介绍在地图的基础上进行我们的数据可视化工作。绘制轨迹图每年春运,都是大部分的人从北上广深等发达地区回到广大的中西部地区,春节之后,再从广大的中西部地区回到......
  • 软件测试/人工智能|Python数据可视化神器pyecharts教程(一)
    前言在很多时候,枯燥的数字并不能很直观的展示地域的差别,比如一个企业,想要分析产品在国内的销售情况,报表可能并不能最直接的展示差异,而一个结合地图的展示,就会直观得多,更便于大家去看到差距,更利于决策。当然,除了做商业决策,将数据与地图结合,也更便于我们展示诸如人口密度,经济总量......
  • Python学习5
    jsonjson是一种轻量级的数据交互格式,可以按照json指定的格式去组织和封装数据.python语言使用json有很大优势,因为,json无非就是一个单独的字典或者一个内部元素都是字典的列表,所以,json可以直接和Python的字典或者列表进行无缝转换。json本质上是一个带有特定格式的字符串主要功......
  • 【python基础之命名空间与作用域】---命名空间与作用域
    title:【python基础之命名空间与作用域】---命名空间与作用域date:2023-12-1118:44:060updated:2023-12-1118:44:00description:cover:https://home.cnblogs.com/u/dream-ze/【一】名称空间与闭包【1】什么是名称空间名称空间即存放名字与对象映射/绑......