精华内容
下载资源
问答
  • Python抓取网页数据
    2021-04-08 15:51:53

    思路

    1. 通过http加载要抓取的网页数据,并转化为DOM树
    2. 根据tag及class标识确定DOM树中相应节点,获取节点数据并存储到变量里
    3. 创建Excel表格,并激活
    4. 往表格添加存在变量里的数据
    5. 保存Excel表格

    代码

    import requests    #requests是HTTP库
    import re
    from openpyxl import workbook  # 写入Excel表所用
    # from openpyxl import load_workbook  # 读取Excel表所用
    from bs4 import BeautifulSoup as bs   #bs:通过解析文档为用户提供需要抓取的数据
    import os
    import io
    import sys
    sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改变标准输出的默认编码
    
    #我们开始利用requests.get()来获取网页并利用bs4解析网页:
    
    global ws
    
    def getData(src, k, ws):
        html = requests.get(src).text   # requests.get(src)返回的是状态码<Response [200]>,加上.text以字节形式(二进制返回数据。   和前端一样,分为get post等  http://www.cnblogs.com/ranxf/p/7808537.html
        soup = bs(html,'lxml')   # lxml解析器解析字节形式的数据,得到完整的类似页面的html代码结构的数据
        ul = soup.find('ul', class_ = 'bigimg')
        bookNames = ul.find_all('p', class_="name")
    
        authorNames = ul.find_all('p', class_="search_book_author")
        prices = ul.find_all('span', class_="search_pre_price")
        for i in range(len(bookNames)):
            ws.append([(bookNames[i].text)[0:15], authorNames[i].find_all('a')[0].text, prices[i].text])
    
    
    def laodData():
        wb = workbook.Workbook()
        ws = wb.active
        ws.append(['书名','作者','价格'])
        for k in list(range(1, 5)):
           # print(k)
            src = 'http://search.dangdang.com/?key=python&act=input&page_index=' + str(k) #当当网查找的图书列表
            getData(src, k, ws)
        wb.save('qinshi.xlsx')
    
    if __name__ == '__main__':
        laodData()
    
    更多相关内容
  • 在编写爬虫进行网页数据抓取的时候,经常会遇到这种需要动态加载数据的HTML网页,如果还是直接从网页上抓取那么将无法获得任何数据。 今天,我们就在这里简单聊一聊如何用python抓取页面中的JS动态加载的数据。 给...
  • Python网页数据抓取,表格的制作,CSS文件的生成,字体的改变
  • 一个简单的python示例,实现抓取 嗅事百科 首页内容 ,大家可以自行运行测试
  • 今天小编就为大家分享一篇对python抓取需要登录网站数据的方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 如下代码: import re import requests class HandleLaGou(object): def __init__(self): self.laGou_session = requests.session() self.header = { 'User-Agent': 'Mozilla/5.0 (Macintosh;...
  • 用PYTHON获取网页数据

    2021-10-18 23:10:47
    Requests库是Python中发起HTTP请求的库,使用非常方便简单。 发送GET请求 当我们浏览器打开东旭蓝天股票首页时,发送的最原始的...用Pythonrequests库的get函数得到数据并设置header. header={ 'User-Agent': '...

    Requests 库是 Python 中发起 HTTP 请求的库,使用非常方便简单。
    发送 GET 请求
    当我们用浏览器打开东旭蓝天股票首页时,发送的最原始的请求就是 GET 请求,并传入url参数.

    import requests
    url='http://push2his.eastmoney.com/api/qt/stock/fflow/daykline/get'

    用Python requests库的get函数得到数据并设置requests的请求头.

    header={
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
    }

    得到network的参数.

    data={
        'cb': 'jQuery1123026726575651052076_1633873068863',
        'lmt': '0',
        'klt':' 101',
        'fields1': 'f1,f2,f3,f7',
        'fields2': 'f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64,f65',
        'ut': 'b2884a393a59ad64002292a3e90d46a5',
        'secid': '0.000040',
        '_': '1633873068864'
    }

    我们使用 content 属性来获取网站返回的数据,并命名为sd.

    sd=requests.get(url=url,headers=header,data=data).content

    json库可以自字符串或文件中解析JSON。 该库解析JSON后将其转为Python字典或者列表。re模块是python独有的匹配字符串的模块,该模块中提供的很多功能是基于正则表达式实现的,而正则表达式是对字符串进行模糊匹配,提取自己需要的字符串部分.

    import json
    import re
    text=str(sd,'utf-8')
    res=re.findall(r'[(](.*?)[)]',text)
    re=json.loads(res[0])
    p=re['data']['klines']

    将杂乱无章的数据排版到excel中,代码如下:

    all_list=re['data']['klines']
    data_list=[]
    latest_price_list=[]
    price_limit_list=[]
    net_amount_list1=[]
    net_proportion_list1=[]
    net_amount_list2=[]
    net_proportion_list2=[]
    net_amount_list3=[]
    net_proportion_list3=[]
    net_amount_list4=[]
    net_proportion_list4=[]
    net_amount_list5=[]
    net_proportion_list5=[]
    for i in range(len(all_list)):
            data=all_list[i].split(',')[0]
            data_list.append(data)
            ##收盘价
            latest_price=all_list[i].split(',')[11]
            latest_price_list.append(latest_price)
            ##涨跌幅
            price_limit=all_list[i].split(',')[12]
            price_limit_list.append(price_limit)
            ##主力净流入
            ####净额
            net_amount1=all_list[i].split(',')[1]
            net_amount_list1.append(net_amount1)
            ##占比
            net_proportion1=all_list[i].split(',')[6]
            net_proportion_list1.append(net_proportion1)
            ##超大单净流入
            ####净额
            net_amount2=all_list[i].split(',')[5]
            net_amount_list2.append(net_amount2)
            ##占比
            net_proportion2=all_list[i].split(',')[10]
            net_proportion_list2.append(net_proportion2)
            ##大单净流入
            ####净额
            net_amount3=all_list[i].split(',')[4]
            net_amount_list3.append(net_amount3)
            ##占比
            net_proportion3=all_list[i].split(',')[9]
            net_proportion_list3.append(net_proportion3)
            ##中单净流入
            ####净额
            net_amount4=all_list[i].split(',')[3]
            net_amount_list4.append(net_amount4)
            ##占比
            net_proportion4=all_list[i].split(',')[8]
            net_proportion_list4.append(net_proportion4)
            ##小单净流入
            ####净额
            net_amount5=all_list[i].split(',')[2]
            net_amount_list5.append(net_amount5)
            ##占比
            net_proportion5=all_list[i].split(',')[7]
            net_proportion_list5.append(net_proportion5)
    #print(data_list)
    import pandas as pd
    df=pd.DataFrame()
    df['日期'] = data_list
    df['收盘价'] = latest_price_list
    df['涨跌幅(%)'] = price_limit_list
    df['主力净流入-净额'] = net_amount_list1
    df['主力净流入-净占比(%)'] = net_proportion_list1
    df['超大单净流入-净额'] = net_amount_list2
    df['超大单净流入-净占比(%)'] = net_proportion_list2
    df['大单净流入-净额'] = net_amount_list3
    df['大单净流入-净占比(%)'] = net_proportion_list3
    df['中单净流入-净额'] = net_amount_list4
    df['中单净流入-净占比(%)'] = net_proportion_list4
    df['小单净流入-净额'] = net_amount_list5
    df['小单净流入-净占比(%)'] = net_proportion_list5
    df# 写入excel
    df.to_excel('东旭蓝天资金流向一览表.xlsx')

    将爬取出的东旭蓝天资金流向数据存到excel表中,得到表格的部分截图如下:

    展开全文
  • 某疾病下SNP与gene关联关系下载,采用python爬取ajax网页json形式获取数据,并存入excel中。亲测可行。主要是获得https的隐藏url, 具体百度都有。
  • 主要介绍了python基于BeautifulSoup实现抓取网页指定内容的方法,涉及Python使用BeautifulSoup模块解析html网页的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • python抓取数据 想要做数据分析师就要知道如何将网页上数据获取。 比如我要去获取http://pic.netbian.com/4kdongman/index_2.html这个网页里所有的图片。 首先电脑里应该先有安装python和配置好python的环境变量。...
  • 如何用Python获取网页指定内容

    千次阅读 多人点赞 2021-11-10 22:48:55
    如何用Python获取网页指定内容 文章目录如何用Python获取网页指定内容1.抓取网页源代码2.抓取一个网页源代码中的某标签内容3.抓取多个网页子标签的内容 Python用数据处理还是相当不错的,如果你想要做爬虫,Python...

    Python用做数据处理还是相当不错的,如果你想要做爬虫,Python是很好的选择,它有很多已经写好的类包,只要调用,即可完成很多复杂的功能
    在我们开始之前,我们需要安装一些环境依赖包,打开命令行
    在这里插入图片描述
    在这里插入图片描述
    确保电脑中具有python和pip,如果没有的话则需要自行进行安装

    之后我们可使用pip安装必备模块 requests

    pip install requests
    

    在这里插入图片描述
    requests是python实现的简单易用的HTTP库,使用起来比urllib简洁很多,requests 允许你发送 HTTP/1.1 请求。指定 URL并添加查询url字符串即可开始爬取网页信息

    1.抓取网页源代码

    以该平台为例,抓取网页中的公司名称数据,网页链接:https://www.crrcgo.cc/admin/crr_supplier.html?page=1
    在这里插入图片描述
    目标网页源代码如下:
    在这里插入图片描述
    首先明确步骤
    1.打开目标站点
    2.抓取目标站点代码并输出

    import requests
    

    导入我们需要的requests功能模块

    page=requests.get('https://www.crrcgo.cc/admin/crr_supplier.html?page=1')
    

    这句命令的意思就是使用get方式获取该网页的数据。实际上我们获取到的就是浏览器打开百度网址时候首页画面的数据信息

    print(page.text)
    

    这句是把我们获取数据的文字(text)内容输出(print)出来

    import requests
    page=requests.get('https://www.crrcgo.cc/admin/crr_supplier.html?page=1')
    print(page.text)
    

    在这里插入图片描述
    成功爬取到了目标网页源代码

    2.抓取一个网页源代码中的某标签内容

    但是上面抓取到的代码充满尖括号的一片字符,对我们没有什么作用,这样的充满尖括号的数据就是我们从服务器收到的网页文件,就像Office的doc、pptx文件格式一样,网页文件一般是html格式。我们的浏览器可以把这些html代码数据展示成我们看到的网页。
    我们如果需要这些字符里面提取有价值的数据,就必须先了解标记元素
    每个标记的文字内容都是夹在两个尖括号中间的,结尾尖括号用/开头,尖括号内(img和div)表示标记元素的类型(图片或文字),尖括号内可以有其他的属性(比如src)
    在这里插入图片描述
    标记内容文字才是我们需要的数据,但我们要利用id或class属性才能从众多标记中找到需要的标记元素。

    我们可以在电脑浏览器中打开任意网页,按下f12键即可打开元素查看器(Elements),就可以看到组成这个页面的成百上千个各种各样的标记元素
    在这里插入图片描述
    标记元素是可以一层一层嵌套的,比如下面就是body嵌套了div元素,body是父层、上层元素;div是子层、下层元素。

    <body>
        <div>十分钟上手数据爬虫</div>
    </body>
    

    回到抓取上面来,现在我只想在网页中抓取公司名这个数据,其他的我不想要
    在这里插入图片描述
    查看网页html代码,发现公司名在标签detail_head里面
    在这里插入图片描述

    import requests
    req=requests.get('https://www.crrcgo.cc/admin/crr_supplier.html?page=1')
    

    这两行上面解释过了,是获取页面数据

    from bs4 import BeautifulSoup
    

    我们需要使用BeautifulSoup这个功能模块来把充满尖括号的html数据变为更好用的格式,from bs4 import BeautifulSoup这个是说从bs4这个功能模块中导入BeautifulSoup,是的,因为bs4中包含了多个模块,BeautifulSoup只是其中一个

    req.encoding = "utf-8"
    

    指定获取的网页内容用utf-8编码

    soup = BeautifulSoup(html.text, 'html.parser')
    

    这句代码用html解析器(parser)来分析我们requests得到的html文字内容,soup就是我们解析出来的结果。

    company_item=soup.find_all('div',class_="detail_head")
    

    find是查找,find_all查找全部。查找标记名是div并且class属性是detail_head的全部元素

    dd = company_item.text.strip()
    

    strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。在这里就是移除多余的尖括号的html数据

    最后拼接之后代码如下:

    import requests
    from bs4 import BeautifulSoup
    
    req = requests.get(url="https://www.crrcgo.cc/admin/crr_supplier.html?page=1")
    req.encoding = "utf-8"
    html=req.text
    soup = BeautifulSoup(req.text,features="html.parser")
    company_item = soup.find("div",class_="detail_head")
    dd = company_item.text.strip()
    print(dd)
    

    在这里插入图片描述
    最后执行结果成功的抓取到了网页中我们想要的公司信息,但是却只抓取到了一个公司,其余的则并未抓取到

    所以我们需要加入一个循环,抓取网页中所有公司名,并没多大改变

    for company_item in company_items:
        dd = company_item.text.strip()
        print(dd)
    

    最终代码如下:

    import requests
    from bs4 import BeautifulSoup
    
    req = requests.get(url="https://www.crrcgo.cc/admin/crr_supplier.html?page=1")
    req.encoding = "utf-8"
    html=req.text
    soup = BeautifulSoup(req.text,features="html.parser")
    company_items = soup.find_all("div",class_="detail_head")
    for company_item in company_items:
        dd = company_item.text.strip()
        print(dd)
    

    在这里插入图片描述
    最终运行结果查询出了该网页中所有的公司名

    3.抓取多个网页子标签的内容

    那我现在想要抓取多个网页中的公司名呢?很简单,大体代码都已经写出,我们只需要再次加入一个循环即可
    查看我们需要进行抓取的网页,发现当网页变化时,就只有page后面的数字会发生变化。当然很多大的厂商的网页,例如京东、淘宝 它们的网页变化时常让人摸不着头脑,很难猜测。
    在这里插入图片描述
    在这里插入图片描述

    inurl="https://www.crrcgo.cc/admin/crr_supplier.html?page="
    for num in range(1,6):
        print("================正在爬虫第"+str(num)+"页数据==================")
    

    写入循环,我们只抓取1到5页的内容,这里的循环我们使用range函数来实现,range函数左闭右开的特性使得我们要抓取到5页必须指定6

    	outurl=inurl+str(num)
        req = requests.get(url=outurl)
    

    将循环值与url拼接成完整的url,并获取页面数据

    完整代码如下:

    import requests
    from bs4 import BeautifulSoup
    
    inurl="https://www.crrcgo.cc/admin/crr_supplier.html?page="
    for num in range(1,6):
        print("================正在爬虫第"+str(num)+"页数据==================")
        outurl=inurl+str(num)
        req = requests.get(url=outurl)
        req.encoding = "utf-8"
        html=req.text
        soup = BeautifulSoup(req.text,features="html.parser")
        company_items = soup.find_all("div",class_="detail_head")
        for company_item in company_items:
            dd = company_item.text.strip()
            print(dd)
    

    在这里插入图片描述
    成功的抓取到了1-5页所有的公司名(子标签)内容

    最近一直在学习,但是学习的东西很多很杂,于是便把自己的学习成果记录下来,便利自己,帮助他人。希望本篇文章能对你有所帮助,有错误的地方,欢迎指出!!!喜欢的话,不要忘记点赞哦!!!

    展开全文
  • 本文实例讲述了Python实现抓取网页生成Excel文件的方法。分享给大家供大家参考,具体如下: Python网页,主要用到了PyQuery,这个跟jQuery用法一样,超级给力 示例代码如下: #-*- encoding:utf-8 -*- import sys...
  • 用Python获取网页数据

    千次阅读 2020-12-24 13:11:29
    #-coding:utf-8imoprturllib2importurllibimportre#填写需要采集的网址urlPath='#设置网页头部信息,模拟浏览器headers={'User-Agent':agent,'Accept':'*/*','Referer':'http://www.google.com'}#打开网页,并读取...

    # -coding: utf-8

    imoprt urllib2

    import urllib

    import re

    # 填写需要采集的网址

    urlPath = '

    # 设置网页头部信息,模拟浏览器

    headers = {'User-Agent' : agent, 'Accept' : '*/*', 'Referer' : 'http://www.google.com'}

    # 打开网页,并读取网页源码

    request = urllib2.Request(urlPath, headers=headers)

    response = urllib2.urlopen(request)

    html = response.read()

    # 构建图片标签正则表达式

    img=re.compile(r"""""",re.I)

    # 保存的图片名称和路径,需要自己设置

    path = '~/Code/Python/img_splider/'

    try:

    # 使用正则匹配出所有的img标签

    img_list = re.findAll(img, html)

    # 遍历得到的所有标签,然后进行下载

    for i in xrange(length(img_list)):

    # 使用urllib读取打开图片

    data = urllib.urlopen(img_list[i]).read()

    # 保存图片的格式为jpeg,需要自己看

    imgStr = path + str(i) + '.jpeg'

    # 打印出图片的url

    print imgStr

    # 创建文件

    f = file(imgStr, 'wb')

    # 写入图片

    f.write(data)

    # 关闭文件流

    f.close()

    except Exception, e:

    print 'error'

    以前写了很多关于爬虫的文章,在博客上面,www.scienceswork.com,可以参考一下。一起学习,上面的代码可以先试下,不行的话在调试

    展开全文
  • 在使用python爬虫技术采集数据信息时,经常会遇到在返回的网页信息中,无法抓取动态加载的可用数据。例如,获取网页中,商品价格时就会出现此类现象。如下图所示。本文将实现爬取网页中类似的动态加载的数据。 1...
  • python3代码,包含了处理post请求爬取网页数据代码,注释部分包括对json数据的处理。如果有疑问,随时扣me *-*
  • python简单实现从静态网页爬取数据 静态网页爬取数据 所谓静态网站就是从网页源代码里面找到所需要内容,那么我们怎么从这样网页中抓取需要的数据呢 步骤思路: 获取网页源代码,html 从html解析出所需要的数据 存储...
  • Python案例学习:抓取网页表格数据解析并写入Excel
  • 基于Python爬虫技术的网页数据抓取与分析研究.pdf
  • 我们需要在一个网站对网站上网页的所有的要素,进行逐一检查核对,1W多要素看的人眼花缭乱,效率慢,易出错。 我们使用的技术有: 1.python 爬虫技术selenium和requests 2.python Excel表格处理 3.http请求的分析...
  • python selenium 获取接口数据。 selenium没有直接提供查询的函数,但是可以通过webdriver提供的API查询,使用的函数是Network.getResponseBody webdriver提供的API文档:...
  • 这篇不考虑复杂情况,放一个读取简单网页数据的小例子:目标数据将ittf网站这个页面所有这些选手的超链接保存下来。数据请求真的很喜欢符合人类思维的库,比如requests,如果是要直接拿网页文本,一句话搞定:...
  • python抓取网页数据入门知识,资料来源于网上共享
  • python实现了 https://tool.lu/xiehouyu网站的获取所有列表分页数据
  • 主要介绍了python 获取网页编码方式实现代码的相关资料,需要的朋友可以参考下
  • 如何用Python数据?(一)网页抓取

    万次阅读 多人点赞 2018-03-04 00:00:00
    你期待已久的Python网络数据爬虫教程来了。本文为你演示如何从网页里找到感兴趣的链接和说明文字,抓取并存储到Excel。(由于微信公众号外部链接的限制,文中的部分链接可能无法正确打开。如有需要,请点击文末的...
  • 但是我们如何将网页表格数据使用python保存为Excel文件? 思路整理: 一般情况下我们能发现网页的表格数据主要是在<table>标签中实现的网页表格数据,这里我们使用Pandas的read_html()方法就可以读取标签中...
  • 网页中提取数据Python程序 这里有三套程序 提取天气数据的weather.py、weather2.py 和wunder-data.txt GetCompany.py 和 GetURL.py 数据从经济时报网站提取包含公司数据的页面的 URL,然后依次提取公司数据 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 131,387
精华内容 52,554
关键字:

如何用python抓取网页上的数据

友情链接: FileNotFoundException.rar