使用python爬取某专科学校官方信息

这篇具有很好参考价值的文章主要介绍了使用python爬取某专科学校官方信息。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

import csv
import os
import re
import time
from urllib.parse import urljoin

from bs4 import BeautifulSoup as bs
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service

os.environ['HTTP_PROXY'] = 'http://127.0.0.1:10809'
os.environ['HTTPS_PROXY'] = 'http://127.0.0.1:10809'


cs = open('fzmjtc.csv','w', encoding='utf-8',newline='')
#指定newline=''参数,可以使每次写入数据不会产生空行
writer = csv.writer(cs)
#csv写入初始化成writer


dourl = "http://www.fzmjtc.cn/szxxgcxy/xsgz/xsdt.htm"


#网页内容过滤
def remove_css(text):
    pattern = re.compile(r'<[^>]+>', re.S)
    result = pattern.sub('', str(text))
    result = result.replace('\xa0', ' ')
    # 定义CSS字段的正则表达式模式
    pattern = r"\.(TRS_Editor [A-Z]+|)|(TRS_Editor [A-Z]+|)|(TRS_Editor [A-Za-z]+|)|(TRS_Editor \{.*?\})"
    # 删除文本中的CSS字段
    result = re.sub(pattern, '', result )
    pattern = r"{.*?}"
    result = re.sub(pattern, '', result)
    return result

def get_page_url(urls):
    driver.get(urls)
    time.sleep(2)
    html = driver.page_source
    soup = bs(html, features="html.parser")
    lu = soup.select('body > div.content.fl.clearFix > div > div.right-list.fr > div.list-con.fl > ul')
    hrefs = lu[0].find_all('a')

    for k in hrefs:
        infourl = urljoin(urls, k['href'])
        get_page_info(infourl)
    return urls

def get_page_info(urls):
    driver.get(urls)
    time.sleep(4)
    html = driver.page_source
    soup = bs(html, features="html.parser")
    #print(soup)

    try:
        title = soup.select('body > div.content.fl.clearFix > form > div.content-title.clearFix > h3' )[0].string
    except:
        title = None

    try:
        publicdate =  soup.select('body > div.content.fl.clearFix > form > div.content-title.clearFix > i')[0]
        publicdate=remove_css(publicdate)
        pattern = r'发布日期:(\d{4}-\d{2}-\d{2})'
        date_match = re.search(pattern, publicdate)
        publicdate=date_match.group(1)
    except:
        publicedate = None

    try:
        con =  soup.select('#vsb_content_4' )[0]
        con=remove_css(con)
    except:
        con  = None


    pattern = re.compile(r'<[^>]+>', re.S)
    con = pattern.sub('', str(con))

    wang_buff = ''
    fan_buff = ''

    result_list = [title,publicdate,con]

    result2_list =[]
    for k in result_list:
        print(k)
        if k is not None:
            result2_list.append(k)
        else:
            result2_list.append(None)
    #写入CSV
    writer.writerow(result2_list)


def get_next_url(urls):
    driver.get(urls)
    time.sleep(4)
    html = driver.page_source
    soup = bs(html, features="html.parser")
    lu = soup.select('body > div.content.fl.clearFix > div > div.right-list.fr > div:nth-child(6) > table > tbody > tr > td > table > tbody > tr')
    hrefs = lu[0].find_all('a')
    for k in hrefs:
        if k.text=='下页':
            urls = urljoin(urls, k['href'])
            break
    return urls




# options = webdriver.ChromeOptions()
#
# # -- 防止被检测,旧版本用法(1):
# # chrome在79版之前用这个
# options.add_experimental_option("excludeSwitches", ["enable-automation"])
# options.add_experimental_option('useAutomationExtension', False)
# options.binary_location='E:/program/chrome-win/chrome.exe'
#
# driver = webdriver.Chrome(options=options)

# -- 防止被检测,新版本用法(2):
# chrome在79和79版之后用这个








#get_page_info('http://www.nhc.gov.cn/xcs/yqtb/202206/0e3cf932d3ae43469e947d7fb97353db.shtml')
#print(get_next_url("http://www.nhc.gov.cn/xcs/yqtb/list_gzbd.shtml"))


if __name__ == '__main__':
    # 创建一个Chrome选项实例
    chrome_options = Options()
    # 指定Chrome浏览器的路径
    chrome_options.binary_location = "E:/program/chrome-win/chrome.exe"  # 更新为您的Chrome路径
    # 创建Service对象
    service = Service('chromedriver.exe')  # 更新为您的chromedriver路径
    # 使用指定的选项创建webdriver实例
    driver = webdriver.Chrome(service=service, options=chrome_options)

    html = driver.page_source

    while True:
        get_page_url(dourl)
        nexturl=get_next_url(dourl)
        #print(nexturl,dourl)
        if(nexturl==dourl):
            break
        else:
            dourl=nexturl

    driver.close()
    driver.quit()

导入模块和代理设置:脚本开始时导入了必要的模块,如 csv, os, re, time, urllib.parse 中的 urljoin,bs4 中的 BeautifulSoup 和 selenium 中的 webdriver。同时为 HTTP 和 HTTPS 设置了代理。

CSV文件初始化:打开一个名为 ‘fzmjtc.csv’ 的CSV文件,用于存储提取的数据。文件以 UTF-8 编码写入,通过指定 newline=‘’ 参数,确保每次写入数据时不会产生空行。初始化了一个 CSV 写入器 writer。

定义目标URL:变量 dourl 存储了目标网站的URL。

网页内容过滤函数:remove_css 函数用于从提取的文本中去除 HTML 标签和 CSS 样式,使得提取的内容更为干净。

获取页面信息函数:

get_page_url:访问给定的URL,提取其中的链接,并对每个链接调用 get_page_info 函数以提取信息。
get_page_info:访问特定的URL,提取该页面的标题、发布日期和内容。
获取下一页URL函数:get_next_url 函数用于在分页的网站上找到“下一页”的链接,并返回该链接的URL。

Selenium WebDriver配置:脚本创建了一个 Chrome WebDriver 实例,用于自动化地打开网页并提取数据。

主逻辑:在 main 部分,脚本配置了 WebDriver,并在循环中不断访问新页面,直到没有更多页面可访问。在每个页面上,它调用 get_page_url 函数来提取信息,并将提取的数据写入之前初始化的CSV文件。

关闭WebDriver:在数据提取完成后,脚本关闭并退出了 WebDriver。文章来源地址https://www.toymoban.com/news/detail-800533.html

到了这里,关于使用python爬取某专科学校官方信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用python来爬取某鱼的商品信息(1/2)

    目录 前言 第一大难题——找到网站入口 曲线救国  模拟搜索 第二大难题——登录 提一嘴 登录cookie获取 第一种 第二种  第四大难题——无法使用导出的cookie  原因 解决办法 最后 出现小问题 总结 下一篇博客(大部分代码实现) 本章讲理论,后面一节讲代码 拿来练练手的

    2024年02月13日
    浏览(23)
  • 用python来爬取某鱼的商品信息(2/2)

    目录 上一篇文章 本章内容 设置浏览器为运行结束后不关闭(可选) 定位到搜索框的xpath地址 执行动作 获取cookie 保存为json文件 修改cookie的sameSite值并且导入cookie 导入cookie(出错) 导入cookie(修改后) 最后出现页面 需要注意的问题 所有代码 总结 用python来爬取某鱼的商品

    2024年02月13日
    浏览(27)
  • Python爬虫实战系列:如何爬取某乎热搜榜单

    本篇文章将带你通过Python爬虫实战,学习如何爬取某乎平台的热搜榜单。

    2024年02月11日
    浏览(47)
  • 爬取某音乐榜单歌曲

    一、打开网页https://music.163.com/,进入榜单(热歌榜) 二、右键检查、刷新网页,选择元素(点击歌曲名) 三、相关代码 四、爬取结果 GET请求(直链,hMusic高品质, mMusic中品质, lMusic低品质): GET请求(直链下载 含VIP):

    2024年02月07日
    浏览(27)
  • selenium爬虫框架爬取某壁纸网站

    基础知识 环境配置 开始爬虫 简单分析目标网站 写函数 获取浏览器对象: 下载每一张图片: 获取每一页的源代码: 运行print_result_every_page python基础语法 面向对象基础 html基础 xpath基础 selenium框架的基本使用 request库 lxml库      3.安装浏览器xpath插件         打开谷歌浏览

    2024年02月05日
    浏览(31)
  • 【爬虫】一次爬取某瓣top电影前250的学习记录

    先贴上爬取的脚本: import requests import re for i in range(1,11):     num=(i-1)*25     url=f\\\"https://movie.douban.com/top250?start={num}filter=\\\"     head={\\\"User-Agent\\\":\\\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36\\\"}#伪造请求头     res=requests.get(url,headers=head)    

    2024年02月06日
    浏览(41)
  • 爬虫不会写?找ChatGPT不就完了,实战爬取某手办网~~~

    💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢迎在文章下方留下你的评论和反馈。我期待着与你分享知识、互

    2024年02月04日
    浏览(30)
  • 爬虫之牛刀小试(十):爬取某宝手机商品的销量,价格和店铺

    首先淘宝需要登录,这一点如果用selenium如何解决,只能手动登录?如果不用selenium,用cookies登录也可。但是验证码又是一个问题,现在的验证码五花八门,难以处理。 我们回到正题,假设你已经登录上淘宝了,接着我们需要找到输入框和搜索按钮,输入“手机”,点击搜索

    2024年04月10日
    浏览(49)
  • 爬虫小试牛刀(爬取学校通知公告)

    完成抓取并解析DGUT通知公告12页数据,并提交excel文件格式数据,数据需要包含日期标题,若能够实现将详情页主体内容与发布人信息数据也一并抓取更佳 提交内容:Excel数据文件 首先看到页面呈现规则的各个方框,这意味着它们之间的一定是一样的 此处该有图 我们点开后

    2024年02月09日
    浏览(32)
  • mac m1 office卸载重装(学校官方正版)

    1、应用程序中将所有的microsoft相关软件移到废纸篓,可能还有outlook或者onedrive,清空废纸篓 2、cmd+shift+G,输入/Library/Preferences,删除所有com.Microsoft开头的文件 3、进入/Library/PrivilegedHelperTools,删除com.Microsoft开头的文件(如果有 4、进入/Library/LaunchDaemons,删除com.Microsoft开头的

    2024年02月03日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包