精华内容
下载资源
问答
  • Python 爬虫获取某个网页所有的a标签中的超链接网址

    如果我们想要使用Python获取某个网页中所有a标签中的超链接网址,应该怎么做呢?

    1. 安装Python

    下载地址:https://www.python.org/downloads/

    可能唯一困惑的是下载哪个版本,看图解答你的疑惑
    在这里插入图片描述
    2.安装BeautifulSoup
    管理员身份运行命令行,然后命令行中输入以下命令:

    pip install beautifulsoup4
    

    3.爬虫核心代码如下:

    # -*- coding:utf-8 -*-
    # python 3.7
    #引入系统类库
    import sys
    # 使用文档解析类库
    from bs4 import BeautifulSoup
    # 使用网络请求类库
    import urllib.request
    # 输入网址
    html_doc = "http://www.discuz.net/forum.php"
    if len(sys.argv)>1:
       website=sys.argv[1]
       if(website is not None):
            html_doc= sys.argv[1]
    # 获取请求
    req = urllib.request.Request(html_doc)
    # 打开页面
    webpage = urllib.request.urlopen(req)
    # 读取页面内容
    html = webpage.read()
    # 解析成文档对象
    soup = BeautifulSoup(html, 'html.parser')   #文档对象
    # 非法URL 1
    invalidLink1='#'
    # 非法URL 2
    invalidLink2='javascript:void(0)'
    # 集合
    result=set()
    # 计数器
    mycount=0
    #查找文档中所有a标签
    for k in soup.find_all('a'):
        #print(k)
        #查找href标签
        link=k.get('href')
        # 过滤没找到的
        if(link is not None):
              #过滤非法链接
              if link==invalidLink1:
                pass
              elif link==invalidLink2:
                pass
              elif link.find("javascript:")!=-1:
                pass
              else:
                mycount=mycount+1
                #print(mycount,link)
                result.add(link)
    #print("打印超链接个数:",mycount)
    #print("打印超链接列表",result)
    f = open(r'result.txt','w',encoding='utf-8')  #文件路径、操作模式、编码  # r''
    for a in result:
        f.write(a+"\n")
    f.close()
    print("\r\n扫描结果已写入到result.txt文件中\r\n")
    

    用法一:

    默认请求代码中写入的网址,将网址中所有的a href 标签执向的URL记录下来

    python SmartWebCrawler.py 
    

    用法二:

    命令行输入网址,将网址中所有的a href 标签执向的URL记录下来

    python SmartWebCrawler.py http://www.runoob.com/
    

    源码下载

    展开全文
  • Python爬虫获取网页编码格式

    千次阅读 2019-09-18 15:35:15
    Python爬虫获取网页编码格式 网页编码格式是每个网页规定的本页面文字的编码方式,其中比较流行的是ascii, gbk, utf-8, iso等。观察许多网页的编码格式都是在meta标签的content属性中定义的。基于以上特点本文提供...

    Python爬虫获取网页编码格式

    网页编码格式是每个网页规定的本页面文字的编码方式,其中比较流行的是ascii, gbk, utf-8, iso等。观察许多网页的编码格式都是在meta标签的content属性中定义的。基于以上特点本文提供获取编码格式的方法。
    代码如下:

    '''
    注:本人使用的是IDLE python 3.7 64-bit,装载bs4库
    '''
    from urllib.request import urlopen
    from bs4 import BeautifulSoup
    import re
    
    def getCharsetList(url = None):
        #打开网页,创建BeautifulSoup对象
        newURL = urlopen(url)
        bsObj = BeautifulSoup(newURL, "html.parser")
       
        #首先查找属性中含有text/html的meta标签以缩小查找范围
        metaTagList = bsObj.findAll('meta', content = re.compile('text/html'))
      
        #定义一个存储编码格式的列表
        charsetList = []
       
        #之后从metaTagList列表中的各项查找其属性内容(用get()函数)
        for metaTag in metaTagList:
            attribution = metaTag.get('content')
            charData = str(attribution)
            position = charData.find('charset')
            charsetList.append(charData[(position + 8):].strip())
            
        return charsetList
    
    

    下面是用百度作为url得到的编码方式(附上本人IDLE运行结果与代码截图):

    百度作为url的代码截图
    本机运行结果

    展开全文
  • Python爬虫获取基金持仓股票数据

    千次阅读 2021-02-11 14:05:47
    通过Python爬虫获取基金持仓股票数据,按照基金持仓金额对股票进行排行,并储存在本地数据库。 from urllib import request from bs4 import BeautifulSoup import re import pymysql fundSharesList = [] db =...

    Python爬虫小实战

    .
    通过Python爬虫获取基金持仓股票数据,按照基金持仓金额对股票进行排行,并储存在本地数据库。

    from urllib import request
    from bs4 import BeautifulSoup
    import re
    import pymysql
    
    fundSharesList = []
    
    db =pymysql.connect(
        host = '127.0.0.1',  
        port =3306,
        user = 'root',
        password = '109036',
        db = 'fund',
        charset = 'utf8'      
    )
    
    head={
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36"
    }
    
    find = {
        1:re.compile(r'html">(.*?)</a></td>'),
        2:re.compile(r'html">(.*?)</a></td>'),
        6:re.compile(r'">(.*?)</td>'),
        7:re.compile(r'">(.*?)</td>'),
        8:re.compile(r'">(.*?)</td>')
    }
    
    def handle (a):
        flag = False
        for i in range(0,len(fundSharesList)):
            if a[0] == fundSharesList[i][0]:
                fundSharesList[i][2] = round(float(fundSharesList[i][2]) + float(a[4]),2)
                flag =True
                break
        if not flag:
            new = [a[0],a[1],a[4]]
            fundSharesList.append(new)
    
    
    if __name__=="__main__":  
        funds = []
        fundNum = 0
        errorNum = 0
        send = request.Request("http://fund.eastmoney.com/js/fundcode_search.js",headers = head)
        response = request.urlopen(send)
        js = response.read().decode('utf-8')
        js = js[11:len(js)-3].split("],[")
        for i in range(0,len(js)):
            fund = str(js[i]).replace('"','')
            fund = fund.split(",")
            funds.append(fund)
    
        while fundNum < len(funds):
            fund_id = funds[fundNum][0]
            print(fund_id + " " + funds[fundNum][2])
            try:
                url = "http://fundf10.eastmoney.com/FundArchivesDatas.aspx?type=jjcc&code=" + str(fund_id) + "&topline=10&year=2020&month=&rt=0.21822537857648627"
                send = request.Request(url,headers = head)
                response = request.urlopen(send, timeout=10)
                html = response.read().decode('utf-8')
                bs =BeautifulSoup(html,"html.parser")
    
                find_list = bs.find_all("tbody")
                tr = find_list[0].find_all("tr")
    
                for i in tr:
                    td = i.find_all("td")
                    fundShares = []
                    for j in range(0,len(td)):
                        if j in [1,2,6,7,8]:
                            a = re.findall(find[j],str(td[j]))[0]
                            if j ==8 :
                                a = str(a).replace(",","")
                                if(len(a)>8):
                                    time.sleep(6)
                            fundShares.append(a)
                    handle(fundShares)
                print()
                errorNum = 0
    
            except Exception as e:
                print(fund_id + " 获取失败")
                print(e)
                if str(e) =="timed out" and errorNum <= 3:
                    print("第" + str(errorNum) + "次超时,重试")
                    errorNum = errorNum + 1
                    fundNum = fundNum - 1
                print()
    
            fundNum = fundNum + 1
            # if fundNum == 1000:
            #     break 
                
        # 使用 cursor() 方法创建一个游标对象 cursor
        cursor = db.cursor() 
        try:
            for insert in fundSharesList:
                sql = "INSERT INTO fundShares VALUES ('"+ str(insert[0]) +"', '" + str(insert[1]) +"', " + str(insert[2]) + ");"
                print(sql)
                # 执行sql语句
                cursor.execute(sql)
                # 提交到数据库执行
                db.commit()
        except Exception as e:
            # 回滚
            db.rollback()
            raise Exception("插入数据库错误!", e)
        # 关闭数据库连接
        db.close()
    

    结果分析:
    在这里插入图片描述
    建表语句

    CREATE TABLE `fundshares`  (
      `fundSharesId` varchar(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '股票代码',
      `fundSharesName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '股票名称',
      `fundSharesMoney` double(255, 2) NULL DEFAULT NULL COMMENT '金额(万元)',
      UNIQUE INDEX `unique`(`fundSharesId`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
    
    展开全文
  • python爬虫获取豆瓣图书Top250

    千次阅读 多人点赞 2019-11-04 09:26:44
    在上一篇博客《python爬虫获取豆瓣电影TOP250》中,小菌为大家带来了如何将豆瓣电影Top250的数据存入MySQL数据库的方法。这次的分享,小菌决定再带着大家去研究如何爬取豆瓣图片的Top250信息,并将数据保存在csv文件中...

            在上一篇博客《python爬虫获取豆瓣电影TOP250》中,小菌为大家带来了如何将豆瓣电影Top250的数据存入MySQL数据库的方法。这次的分享,小菌决定再带着大家去研究如何爬取豆瓣图片的Top250信息,并将数据保存在csv文件中!

    我们先根据网址https://book.douban.com/top250来到豆瓣图书Top250的页面。。
    在这里插入图片描述
    同样,我们发现需要爬取10个网页的内容。
    在这里插入图片描述
    通过研究不同页数所对应url变化的规律,例如:
    第二页的url为:https://book.douban.com/top250?start=25
    第三页的url为:https://book.douban.com/top250?start=50
    第十页(也就是最后一页)的url为:https://book.douban.com/top250?start=225


    我们可以先构造出url:

    #  构造urls
    urls=['https://book.douban.com/top250?start={}'.format(i) for i in range(0,250,25)]
    
    

    本次爬虫我们需要爬取的内容
    在这里插入图片描述
    更多的信息大家选中对应的元素右键"检查"查看数据分布情况!
    在这里插入图片描述
    接下来小菌直接上代码,较为准确的步骤说明在代码注释里了,各位小伙伴们自行"食用"!

    """
    @File    : 豆瓣图书Top250(手动).py
    @Time    : 2019/10/30 14:27
    @Author  : 封茗囧菌
    @Software: PyCharm
    
          转载请注明原作者
    	  创作不易,仅供分享
     
    """
    
    #  导入相关的库
    from lxml import etree
    import requests
    import csv     #  运用Python中的csv库,把爬取到的信息存储在本地的CSV文件中
    
    
    #  新建一个csv文件
    
    # Permission denied
    # 重复使用同一个csv文件会出现[没有权限;拒绝访问]
    fp=open('G:/Python/Crawler/doupanbooktest02.csv','wt',newline='',encoding='utf-8')
    writer=csv.writer(fp)
    # 写入表头信息
    writer.writerow(('name','url','author','publisher','date','price','rate','comment'))
    
    #  构造urls
    urls=['https://book.douban.com/top250?start={}'.format(i) for i in range(0,250,25)]
    
    #  加入请求头
    headers={
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
    }
    
    for url in urls:
        # 用requests库获取网页信息,lxml解析html文件
        html=requests.get(url,headers=headers)
        selector=etree.HTML(html.text)
    
        # 取大标签,以此类推
        # <tr class='item'>
        infos=selector.xpath('//tr[@class="item"]')
    
        for info in infos:
            #  IndexError: list index out of range
            name = info.xpath('td/div/a/@title')[0]
            url = info.xpath('td/div/a/@href')[0]
            # /text 是获取到定位元素的文本值
            book_infos = info.xpath('td/p/text()')[0]
            # print(book_infos)
            author = book_infos.split('/')[0]
            publisher = book_infos.split('/')[-3]
            date=book_infos.split('/')[-2]
            price=book_infos.split('/')[-1]
            rate=info.xpath('td[2]/div[2]/span[2]/text()')[0]
            comments=info.xpath('td/p/span/text()')
            comment=comments[0] if len(comments) !=0 else "空"
    
            #  打印查看结果
            print(name, url, author, publisher, date, price, rate, comment)
            #  将上述的数据写入到csv文件
            writer.writerow((name,url,author,publisher,date,price,rate,comment))
    
     #  关闭csv文件
    fp.close()
    

    效果图:
    在这里插入图片描述
    doupanbooktest02.csv文件
    在这里插入图片描述

            本次的分享就到这里了,喜欢的小伙伴们记得点赞加关注~(更多关于python基础的内容小伙伴们移步至Python 基础|菜鸟教程)学习( • ̀ω•́ )✧

    展开全文
  • python 爬虫获取网页 html 内容以及下载附件的方法 python 爬虫获取网页 html 内容的两种方法: 获取静态网页和使用浏览器获取动态内容。 from urllib.request import urlopen from urllib import request from bs4 ...
  • Python爬虫100例教程导航帖(已完结)

    万次阅读 多人点赞 2019-01-08 23:40:01
    Python爬虫入门教程导航,目标100篇。 本系列博客争取把爬虫入门阶段的所有内容都包含住,需要你有较好的Python基础知识,当然你完全零基础也可以观看本系列博客。 Python爬虫入门教程,加油!
  • Python爬虫入门项目

    万次阅读 多人点赞 2017-12-25 16:26:21
    Python是什么 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。 创始人Guido van Rossum是BBC出品英剧Monty Python’s Flying Circus(中文:蒙提·派森的...
  • Python爬虫获取电子书资源实战

    万次阅读 2018-06-09 11:19:23
    最近在学习Python,相对java来说python简单易学、语法简单,工具丰富,开箱即用,适用面广做全栈开发那是极好的,...据说网络上80%的爬虫都是用python写的,不得不说python爬虫真的是so easy。基本上一个不太复...
  • 利用Python爬虫获取IP2Location定位数据

    千次阅读 2016-11-13 11:41:07
    IP2Location是一个很好的IP定位信息查询网站,本文利用python爬虫获取其网页版IP信息
  • Python爬虫获取PPT模板

    万次阅读 2018-08-09 22:42:24
    还有一个不足之处就是,每一个风格都有很多页而我直接先获取有多好页然后拼接网址,也可以使用selenium库模拟点击click操作!相关内容读者自行百度。 5结果展示        
  • 接上一篇文章:Python爬虫:编写...本篇文章:继续介绍另外两种方式来实现python爬虫获取数据,并将python获取的数据保存到文件中。 一、第一种方式: 主要通过爬取百度官网页面数据,将数据保存到文件baidu.html中
  • i = r.get(image, headers=headers).content with open(file_name + '/' + name + '.jpg' , 'wb') as f: f.write(i)
  • 本篇博客小菌为大家带来的是用python爬虫获取起点中文网人气排行Top100的分享,希望大家能在学习的过程中感受爬虫的魅力!         我们先根据网址...
  • 使用Python爬虫获取豆瓣影评,并用词云显示 Python语言流行到现在,目前最受开发者喜爱的功能莫过于它的爬虫功能,以至于很多人以为Python的英语发音也是“爬虫”,其实它是读作“啪善”[‘paɪθɑn] 。而爬取网络...
  • Python爬虫(二):爬虫获取数据保存到文件

    万次阅读 多人点赞 2018-10-18 17:33:42
    接上一篇文章:Python爬虫(一):编写简单爬虫之新手入门 前言: 上一篇文章,我爬取到了豆瓣官网的页面代码,我...废话不多说,进入正文。 本篇文章:继续介绍另外两种方式来实现python爬虫获取数据,并将pytho...
  • python爬虫获取拉钩网在线搜索招聘信息(超实用!)

    万次阅读 多人点赞 2019-10-30 10:01:16
    在之前的博客《用python爬虫制作图片下载器(超有趣!)》中,小菌为大家分享了如何制作一个快捷便利的图片下载器。本次分享小菌,小菌为大家带来的同样是关于爬虫程序方面的分享——获取拉勾网在线搜索消息。话不多说,...
  • Python爬虫获取贴吧中的邮箱

    千次阅读 2018-10-30 16:48:00
    最近公司正在谈的项目需要用到爬虫,和经理交流后,经理建议我用Python实现。昨天看了会儿Python基本语法后,在电脑上安装了Python 3.7以及编译器PyCharm。今天参考了网上的代码后,根据网上的代码小做修改,实现了...
  • 如何利用Python爬虫获取网络小说

    千次阅读 2020-06-28 10:09:20
    前言: 随着网络的时代的发展,人们很少去安静的去看一本书。而是选择看网络小说,可是...获取对应小说的下载链接,点击下载链接网址,下载对应的txt文件。 二、项目准备 软件:PyCharm 需要的库:requests、lxm
  • Python爬虫获取cookie:利用selenium

    千次阅读 2016-08-06 09:53:35
    利用selenium,为python爬虫提供强大支持
  • python爬虫 获取网页源代码

    千次阅读 2019-02-26 10:27:48
    # 获取网页源代码 kv = {'user-agent':'Mozilla/5.0'} # 请求头信息,相当于一个浏览器面具 html = requests.get('http://tieba.baidu.com/f?ie=utf-8&amp;kw=python&amp;red_tag=g1015520224',headers=kv) ...
  • 使用requests和bs4库 静态爬取页面[2017年数据](http://www.zuihaodaxue.com/zuihaodaxuepaiming2017.html "") Soup获得部分源码如图 !...对应网页源码如图 !...可见,该tr中第一个<td>1<...
  • 解决python使用爬虫获取json格式的网页,输出以及写入文件乱码的情况import codecsresp = requests.get(url,headers=headers) result = json.dumps(resp.json(),ensure_ascii=False) #若不指定ensure_ascii=False,...
  • Python爬虫获取股票信息代码分享

    千次阅读 2019-02-15 17:15:18
    通过该程序会在桌面上生成每日最新的股票信息,非常实用的一个小程序 具体代码如下 # -*- coding: utf-8 -*- import requests import traceback ...# 获取网页内容 def get_html_text(url): try: ...
  • 刚开始参考了一篇文章:Python获取网页指定内容(BeautifulSoup工具的使用方法),自己尝试后,发现出现错误:urllib.error.HTTPError: HTTP Error 418,查询后发现是:某些网页有反爬虫的机制。解决方法参考
  • 帮粉丝写Python爬虫之【获取CSDN周榜所有大佬的收费专栏】,做爬虫最终要的是什么?要到数据接口!
  • python爬虫获取跳转后的响应url

    万次阅读 2018-11-24 11:49:42
    ** 在爬虫中经常会遇到网页给的某个url是跳转前的url,这类请求url一般很长,假如数据库建表时字段限制,则会无法入库,从而导致拿不到数据,看了下网上其他教程,较为繁琐.我在这提供一种思路及代码片段供大家参考. ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 118,734
精华内容 47,493
关键字:

python爬虫获取网址

python 订阅
爬虫 订阅