首页 > 编程语言 >python爬虫的一些代码

python爬虫的一些代码

时间:2024-03-16 22:31:36浏览次数:30  
标签:python text 代码 爬虫 url href urls new self

你好,欢迎查看我的第5个笔记。这是本人为了保存一些代码而写的博客,由于精力实在有限,无法从头开始介绍爬虫相关的知识故仅仅罗列了几段代码案例

 

1.编写url管理器

class UrlManager():
    """
    url管理器罢了
    """
    def __init__(self):
        self.new_urls=set()
        self.old_urls=set()

    def add_new_url(self,url):
        if url is None or len(url)==0:
            return
        if url in self.new_urls or url in self.old_urls:
            return
        self.new_urls.add(url)

    def add_new_urls(self,urls):
        if urls is None or len(urls)==0:
            return
        for url in urls:
            self.new_urls.add(url)

    def get_url(self):
        if self.is_has_url():
            url = self.new_urls.pop()
            self.old_urls.add(url)
            return url
        else:
            return None

    def is_has_url(self):
        return len(self.new_urls) > 0

要先创建一个包(utils),在里面建个py文件(url_manager),里面写上面的代码

像这样:

fe24ea42f44744c693a2316a2eac6173.png

 

2.爬取www.crazyant.net的全部标题网页

import requests
from bs4 import BeautifulSoup
from utils import url_manager
import re


fout=open("crazyant_all_pages.text","w")

root_url ="http://www.crazyant.net"#定义入口网站
urls=url_manager.UrlManager()#实例化UrlManager类
urls.add_new_url(root_url)#调用add_new_url()方法,把入口网站放在new_urls里面

while urls.is_has_url():#当new_urls里面有网站时
    cur_url=urls.get_url()#从newurls里面拿出一个网站
    r=requests.get(cur_url,timeout=3)#发送request,抓取r的信息
    soup=BeautifulSoup(r.text,"html.parser")#用html。parser解析r
    title=soup.title.string#抓取r的title信息
    print("success: %s,%s\n" % (cur_url, title))#打印cur_url 和 title
    fout.write("%s\t%s\n"%(cur_url,title))
    links=soup.find_all("a")#得到所有的a标签
    pattern=r'^http://www.crazyant.net/\d+.html$'#设置正则语句
    for link in links:##遍历每一个a
        href=link["href"]#得到每个a的链接
        if href is None or len(href)==0:
            continue
        if re.match(pattern,href) :
            urls.add_new_url(href)
fout.close()

注:www.crazyant.net是b站up主的个人博客,见下面链接[3.2]--Python爬虫实战爬取所有博客页面_哔哩哔哩_bilibili

附一张up主的主页图片

91c743fd3ce94685ba809a220ea4eb8a.png

 

3.爬取四川农业大学教务网的通知

import requests
from bs4 import BeautifulSoup
fout = open("jiaowu_Notice.text","w",encoding="utf8")
url ="https://jiaowu.sicau.edu.cn/web/web/web/gwmore.asp"
response=requests.get(url)
response.encoding="gb2312"
soup = BeautifulSoup(response.text,"html.parser")
form=soup.find("form",attrs={"method":"post"})
trs=form.find_all("tr",attrs={"class":"text-c"})
num=1
for tr in trs:
    links=tr.find("div",attrs={"align":"left"})
    if links is None or len(links) == 0:
        continue
    for link in links:
        try:
            href=link["href"]
            if href is None or len(href) == 0:
                continue
            print(f"{num}.  https://jiaowu.sicau.edu.cn/web/web/web/{href}\t{link.get_text()}\n")
            num+=1
            fout.write(f"{num}.\thttps://jiaowu.sicau.edu.cn/web/web/web/{href}\t{link.get_text()}\n")
        except:
            pass
fout.close()

4.爬取打印四川农业大学理学院所有的通知告示

import requests
from bs4 import BeautifulSoup
num=0
url_list=["https://lixueyuan.sicau.edu.cn/xwjtz/tzgg.htm"]
for n in [2,3]:
    url_list.append(f"https://lixueyuan.sicau.edu.cn/xwjtz/tzgg/{n}.htm")
for url in url_list:
    r=requests.get(url)
    r.encoding="utf8"
    soup=BeautifulSoup(r.text,"html.parser")
    lis=soup.find("div",attrs={"class":"newm"}).find_all("li")

    for li in lis:
        a=li.find("a")
        text_list=a.get_text().split("\n")
        text = text_list[1]
        time = text_list[2]
        href=a["href"].strip("..")
        num+=1
        print(f"{num}\thttps://lixueyuan.sicau.edu.cn{href}\t{time}\t{text}")

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

标签:python,text,代码,爬虫,url,href,urls,new,self
From: https://blog.csdn.net/2401_82586867/article/details/136511356

相关文章

  • 【Python使用】python高级进阶知识md总结第4篇:静态Web服务器-命令行启动动态绑定端口
    python高级进阶全知识知识笔记总结完整教程(附代码资料)主要内容讲述:操作系统,虚拟机软件,Ubuntu操作系统,Linux内核及发行版,查看目录命令,切换目录命令,绝对路径和相对路径,创建、删除文件及目录命令,复制、移动文件及目录命令,终端命令格式的组成,查看命令帮助。HTTP请求报文,HTTP响应报文......
  • python 进行网址 URL 中的 % 转化
    网址URL中,有很多%,很难看出网址中的有用信息,如:get请求中,URL中的参数。通过python3的urllib包,可以实现对URL中%的转换。importurllib.parseurl="https://vws2019.lqqgis.com/portal/sharing/rest/search?num=100&start=1&sortField=modified&sortOrder=desc&q=%20owner%3A%22......
  • PyInstaller:将你的Python代码打包成独立应用程序,让你的创意无限释放!
    https://www.bilibili.com/read/cv24488127/ 简介PyInstaller是一个用于将Python应用程序打包为独立可执行文件的工具。它可以将Python脚本转换为可以在目标机器上独立运行的可执行文件,无需事先安装Python解释器或其他依赖项。PyInstaller支持多个平台,包括Windows、Mac和Linux......
  • Python中class和def
    class:是一个面向对象的类,用来描述具有相同的属性和方法的对象的集合,类可以起到模版的作用,所以在创建实例的时候,可以将我们认为必要的属性填写进方法__init__,具体查看代码示例self:表示创建实例本身,所以就可以把各种属性绑定到self调用:在类中定义函数,类和函数都可作为一个模块保......
  • Locust 代码脚本实现
    需求:用旧版本的locsut去压测我们的验证码和登录的接口。’定义任务 :发送http接口请求  ----》类似于Jmeter中的http取样器定义任务集:定义一个用户行为,包含多个http请求 ----》类似于Jmeter中的事务控制器定义Locust类:Locus类代表用户,用户会对应具体的用户行为......
  • python request.post异常
    pythonpost报错退出Failedtoestablishanewconnection importrequestsfromrequests.exceptionsimportRequestException#设置URL和请求数据url='http://example.com/api/resource'data={'key1':'value1','key2':'......
  • 代码随想录一刷总结
    总结我就不过多总结技术性的东西了,只讲讲自己的感受。呜呜有时候钱还是让别人去赚吧,如果自驱力不行(其实九成都不行,不用太自信嘿嘿)那么就让外部环境影响你吧,报个代码训练营也挺好的,最起码我从来没有认真刷过那么多题。而且力扣官方的题解呀,真的是有时候被吓死,全是新语法,我看......
  • python来判断密码强弱-类
    '''设计者:ISDF版本:v1.0日期:2019/4/3''''''设计者:ISDF版本:v2.0日期:2024/4/3'''classPasswordTool:'''密码工具类'''def__init__(self,password):#类......
  • conda 安装R以及在 Jupyter Notebook中运行 R 代码
    1.打开命令行工具,输入以下命令,创建一个新的conda环境并激活:condacreate-nmyenvr-base==4.2.2condaactivatemyenv如碰到PackagesNotFoundError问题解决,使用以下命令,将conda-forge通道添加到通道列表中:condaconfig--appendchannelsconda-forge2.在conda环境中安......
  • Python《基础知识》
    1.列表:list列表内的元素通过方括号[]来表示,且可以修改例:list=[1,2,3,"fhdsj","sum"]有关list的函数:cmp(list1,list2)比较两个列表的元素len(list)返回列表元素个数max(list)返回列表元素最大值min(list)返回列表元素最小值list(seq)将元组转换为列表示例:list......