利用python爬取世界名牌大学排名数据_Python爬虫--2019大学排名数据抓取

Python爬虫--2019大学排名数据抓取

准备工作

输入:大学排名URL连接

输出:大学排名信息屏幕输出

所需要用到的库:requests,bs4

思路

获取网页信息

提取网页中的内容并放到数据结构中

利用数据结构展示并输出结果

程序设计

定义函数getHTMLText()获取网页信息

定义函数UnivList()放入数据结构

定义函数printUnivList()输出到屏幕

总体而言:

写出需要自定义的函数,制作出总体的框架

写出主函数框架,实现功能

最后调用函数

步骤

查看url源代码

分析源代码,查看需要爬取的内容在什么位置

从图片中可以看出,排名信息是在

标签

具体的信息是在

标签下的标签内的string

定义函数getHTMLText

def getHMLText(url):

'''

获取url信息,输出url的内容,来抓取网页的信息

'''

try:

r = request.get(url, timeout=30)

r.raise_for_status()

r.encoding = r.apparent_encoding

return r.text

except:

return "抓取失败!"

定义函数UnivList()

def UnivList(ulist, html):

'''

提取html中的数据,放入到ulist列表,完成数据提取

'''

soup = BeautifulSoup(html, "html.parser")

for tr in soup.find('tbody').children:

if isinstance(tr, bs4.element.Tag): # 判断tr的子节点是否为非属性字符串

tds = tr('td')

# print(tds)

# print('#' * 30)

# print(tds[0], tds[0].string)

# print('#' * 30)

# print(tds[1], tds[1].string)

# print('#' * 30)

# print(tds[2], tds[2].string)

# print('#' * 30)

# print(tds[3], tds[3].string)

ulist.append([tds[0].string, tds[1].string, tds[3].string, tds[2].string])

定义函数printUnivList()

def printUnivList(ulist, num):

'''

将ulist列表信息打印,num表示打印前多少排名的学校

'''

print("{:^3}\t{:^10}\t{:^20}\t{:^30}".format("排名", "学校名称", "总分", '地址'))

for i in range(num):

u = ulist[i]

print("{:^3}\t{:^10}\t{:^20}\t{:^30}".format(u[0], u[1], u[2], u[3]))

主函数main()

def main():

'''

实现整个代码

'''

ulist = []

url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html'

html = getHTMLText(url)

UnivList(ulist, html)

printUnivList(ulist, 100)

调用主函数

main()

完整代码

import requests

import bs4

from bs4 import BeautifulSoup

def getHMLText(url):

'''

获取url信息,输出url的内容,来抓取网页的信息

'''

try:

r = request.get(url, timeout=30)

r.raise_for_status()

r.encoding = r.apparent_encoding

return r.text

except:

return "抓取失败!"

def UnivList(ulist, html):

'''

提取html中的数据,放入到ulist列表,完成数据提取

'''

soup = BeautifulSoup(html, "html.parser")

for tr in soup.find('tbody').children:

if isinstance(tr, bs4.element.Tag): # 判断tr的子节点是否为非属性字符串

tds = tr('td')

# print(tds)

# print('#' * 30)

# print(tds[0], tds[0].string)

# print('#' * 30)

# print(tds[1], tds[1].string)

# print('#' * 30)

# print(tds[2], tds[2].string)

# print('#' * 30)

# print(tds[3], tds[3].string)

ulist.append([tds[0].string, tds[1].string, tds[3].string, tds[2].string])

def printUnivList(ulist, num):

'''

将ulist列表信息打印,num表示打印前多少排名的学校

'''

print("{:^3}\t{:^10}\t{:^20}\t{:^30}".format("排名", "学校名称", "总分", '地址'))

for i in range(num):

u = ulist[i]

print("{:^3}\t{:^10}\t{:^20}\t{:^30}".format(u[0], u[1], u[2], u[3]))

def main():

'''

实现整个代码

'''

uinfo = []

url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html'

html = getHTMLText(url)

fillUnivList(uinfo, html)

printUnivList(uinfo, 100)

main()

好的,我了解你的问题了。这是一个非常实用的问题,下面我将为你详细介绍Python爬取boss直聘招聘信息的实现方法。 首先,我们需要准备以下工具和库: - Python 3.6 或以上版本 - requests 库 - BeautifulSoup 库 - pandas 库 接下来,我们按照以下步骤进行实现: 1. 导入需要的库: ```python import requests from bs4 import BeautifulSoup import pandas as pd ``` 2. 定义一个函数,用于获取页面内容: ```python def get_page(url): headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') return soup ``` 3. 定义一个函数,用于获取职位信息: ```python def get_jobs(soup): job_list = [] jobs = soup.select('.job-list ul li .job-primary .info-primary') for job in jobs: job_name = job.select('.job-title')[0].text.strip() company_name = job.select('.company-text .name')[0].text.strip() salary = job.select('.job-limit .red')[0].text.strip() job_info = job.select('.job-title')[0].attrs['href'] job_detail = get_job_detail(job_info) job_list.append([job_name, company_name, salary, job_detail]) return job_list ``` 4. 定义一个函数,用于获取职位的详细信息: ```python def get_job_detail(url): soup = get_page(url) job_detail = soup.select('.job-detail .job-sec')[0].text.strip().replace('\n', '') return job_detail ``` 5. 定义一个函数,用于保存数据到本地CSV文件: ```python def save_to_csv(job_list): df = pd.DataFrame(job_list, columns=['职位称', '公司称', '薪资待遇', '职位描述']) df.to_csv('boss直聘招聘信息.csv', index=False) ``` 6. 最后,我们编写主程序: ```python if __name__ == '__main__': url = 'https://www.zhipin.com/c101280100/?query=python&page=1' soup = get_page(url) job_list = get_jobs(soup) save_to_csv(job_list) ``` 在运行程序之,我们需要先确定爬取的页面URL和参数。在本例中,我们爬取的是boss直聘上“python”职位的招聘信息,因此URL为“https://www.zhipin.com/c101280100/?query=python&page=1”,其中“c101280100”是城市代码,这里是上海的城市代码,可以根据需要修改。在“query”参数中输入关键词“python”,“page”参数表示页码。 运行程序后,会将爬取到的职位信息保存到本地的CSV文件中,文件为“boss直聘招聘信息.csv”。 以上就是Python爬取boss直聘招聘信息的实现方法,希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值