精华内容
下载资源
问答
  • 主要为大家详细介绍了python爬虫爬取网页表格数据,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Python爬虫爬取网页数据并存储(一)

    万次阅读 多人点赞 2018-10-27 20:53:48
    Python爬虫爬取京东网页信息并存储环境搭建爬虫基本原理urllib库使用requests库使用正则表达式创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式...

    环境搭建

    1.需要事先安装anaconda(或Python3.7)和pycharm
    *anaconda可在中科大镜像下下载较快
    2.安装中遇到的问题:
    *anaconda(记得安装过程中点添加路径到path里,没添加的话手动添加:
    计算机右键属性——高级系统设置——环境变量——用户/系统变量path路径中,添加 C:\Users\Aurora\Anaconda3;(anaconda安装路径))
    打开jupyter notebook ,出现页面空白解决方案:
    打开 C:\Users\自己的用户名.jupyter\jupyter_notebook_config.py
    在末尾输入以下代码:
    import webbrowser
    webbrowser.register(“Chrome”, None, webbrowser.GenericBrowser(u"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"))
    c.NotebookApp.browser = u’Chrome’
    ##浏览器名,浏览器路径(通过右键属性可以看到路径)

     *anaconda ,打开cmd/anaconda prompt,输入conda list 即可查看已有的包,还需添加可用 conda install package_name 来添加
     在本次网络爬虫过程中,我们需要的库有: re,urllib(这两个库为Python内置库,不需要添加),requests,lxml(anaconda中已存在,Python3.7安装装需要使用pip,下载whl软件),beautifulsoup4,json
    
     *pycharm基础设置问题:
         设置为conda环境下Python3.7
    

    爬虫基本原理

    什么是爬虫?
    爬虫是请求网站并提取数据的自动化程序

    从简单的例子开始:
    我们随便打开一个网站,我们在百度上搜索新闻,右键,审查元素
    在这里插入图片描述
    会得到这样一个响应,点Name那一栏唯一的一个news.baidu.com,我们会发现以下信息:
    在这里插入图片描述
    我们就通过这些html代码来获取信息。
    让计算机代替人工来提取信息就是我们要用Python所要实现的任务。
    所以我们就可以通过以上过程总结爬虫的基本原理
    1.发出请求:即发出一个Request
    2.获取响应内容:如果服务器正常响应就可以得到一个Response
    3.解析内容:得到的内容是HTML,可以用正则表达式,网页解析库进行解析。
    4.保存数据

    urllib库使用

    urllib.request 请求模块

    //简单使用
    import urllib.request
    request = urllib.request.Request('http://www.baidu.com')
    response = urllib.request.urlopen(request)
    print(response.read(),decode('utf-8'))
    

    urllib.error 异常处理模块

    urllib.parse url解析模块

    urllib.robotparser robots.txt解析模块

    (建议用下面的requests库而不使用urllib库)

    requests库使用

    解析json

    //
    import json
    import requests
    response = request.get("http://httpbin.org/get")
    print(response.json())
    
    //添加headers参数(应对一些反爬虫的最简单的方法)
    //以猫眼电影top100为例
     import requests
     url = 'https://maoyan.com/board/4?offset=0'
     headers = {'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}
     response = requests.get(url,headers = headers)
     response.encoding = 'utf-8'
    

    正则表达式

    正则表达式
    在这里插入图片描述
    在这里插入图片描述


    一个示例

    import requests
    from requests.exceptions import RequestException
    import re
    import json
    
    def get_one_page(url,headers):
       try:
            response = requests.get(url,headers = headers)
            response.encoding = 'utf-8'
            if response.status_code == 200:
                return response.text
            return None
       except RequestException:
           return None
    
    def parse_one_page(html):
    //提取网页信息的正则表达式
        pattern = re.compile('<dd>.*?board-index.*?>(\d*)</i>.*?data-src="(.*?)".*?name"><a'
                             +'.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)(/p)'
                             +'.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>',re.S)  
        items = re.findall(pattern,html)
        for item in items:
            yield {
                'index':item[0],
                'image': item[1],
                'title': item[2],
                'actor': item[3].strip()[3:],
                'time': item[4].strip()[5:],
                'score': item[5]+item[6]
            }
    //写入result.txt文件中
    def write_to_file(content):
        with open('result.txt', 'a') as f:
            f.write(json.dumps(content) + '\n')
            f.close()
    
    
    def main():
    //猫眼电影爬取需添加headers,从用户角度访问
        url = 'https://maoyan.com/board/4?offset=0'
        user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
        headers = {'User-Agent': user_agent}
        html = get_one_page(url, headers)
        for item in parse_one_page(html):
            print(item)
            write_to_file(item)
    
    
    if __name__ == '__main__':
        main()
    
    

    运行结果:
    在这里插入图片描述
    上述例子为抓取一页信息并存储,若要抓取多页的信息,需要引入Pool模块,用多线程并发抓取,如下构造:

    def main(offset):
        url = 'https://maoyan.com/board/4?offset=0'
        user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
        headers = {'User-Agent': user_agent}
        html = get_one_page(url, headers)
         for item in parse_one_page(html):
            print(item)
            write_to_file(item)
    if __name__ == '__main__':
        p = Pool()
        p.map(main.[i*10 for i in range(10)]       
    
    展开全文
  • Python 爬虫 爬取单个基因的生物学功能(urllib+正则表达式): import re import urllib from urllib import request url = ‘https://www.ncbi.nlm.nih.gov/gene/?term=NCOA1’ response = urllib.request....

    Python 爬虫 爬取单个基因的生物学功能(urllib+正则表达式):

    import re
    import urllib
    from urllib import request
    url = 'https://www.ncbi.nlm.nih.gov/gene/?term=FUT1'   #  查找FUT1基因的网址
    response = urllib.request.urlopen(url)
    content = response.read().decode('utf-8')   #  对response  进行解码
    print(content)
    print(type(content))
    p =re.findall('<td>(.*?)</td>',content)     #  (.*?)为正则表达式的目标区域
    print('FUT1:',p[0])
    
    展开全文
  • python爬虫,爬取表格数据

    万次阅读 多人点赞 2019-06-02 19:33:34
    python爬虫爬取全国空气质量指数 编程环境:Jupyter Notebook 所要爬取的网页数据内容如下图 python爬虫代码及含义详细说明 #全国城市 import time import requests from bs4 import BeautifulSoup headers =...

    python爬虫,爬取全国空气质量指数

    编程环境:Jupyter Notebook
    所要爬取的网页数据内容如下图

    在这里插入图片描述

    python爬虫代码及含义详细说明

    #全国城市
    import time
    import requests
    from bs4 import BeautifulSoup
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
    }#爬虫[Requests设置请求头Headers],伪造浏览器
    # 核心爬取代码
    url= 'http://www.tianqihoubao.com/aqi/aqi_rank.html'
    params = {"show_ram":1}
    response = requests.get(url,params=params, headers=headers)#访问url
    listData=[]#定义数组
    soup = BeautifulSoup(response.text, 'html.parser')#获取网页源代码
    tr = soup.find('table',class_='b').find_all('tr')#.find定位到所需数据位置  .find_all查找所有的tr(表格)
    # 去除标签栏
    for j in tr[1:]:        #tr2[1:]遍历第1列到最后一列,表头为第0列
        td = j.find_all('td')#td表格
        Date = td[0].get_text().strip()           #遍历排名
        Quality_grade = td[1].get_text().strip()  #遍历城市
        AQI = td[2].get_text().strip()            #遍历空气质量指数AQI
        AQI_rank = td[3].get_text().strip()       #遍历PM2.5浓度
        PM = td[4].get_text()                     #遍历空气质量状况
        Cities = td[5].get_text()                  #遍历省份
        listData.append([Date,Quality_grade,AQI,AQI_rank,PM,Cities])
    print (listData)#打印
    

    运行结果如下

    在这里插入图片描述

    展开全文
  • 准备工作: ...这个网站的内容用我之前写的博客Python爬虫爬取小说中的方法是不能爬取成功的。复制了表格中的selector值,但是在调试的时候发现找不到这个selector,找不到表格的内容。 后来..

    准备工作:

      Python版本 python3.7

      Python库:requests, bs4, xlwt

    目标网址:http://www.shaanxi.gov.cn/xw/ztzl/zxzt/zkzl/2021/2021gwy/202102/t20210222_2153937.html

    网页分析:

    这个网站的内容用我之前写的博客Python爬虫爬取小说中的方法是不能爬取成功的。复制了表格中的selector值,但是在调试的时候发现找不到这个selector,找不到表格的内容。

    后来通过F12启动调试模式,刷新网页,然后看Network项,发现有一个html页面下载了好长时间,然后终于在里面找到了想要的数据:

    找到了数据的位置,然后可以通过BeautifulSoup模块的find方法来定位元素:

    import requests
    import xlwt
    from bs4 import BeautifulSoup
    
    url = 'http://www.shaanxi.gov.cn/xw/ztzl/zxzt/zkzl/2021/2021gwy/202102/t20210222_2153937.html'
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    data = soup.find('table')

    找到了整个表之后,然后就可以顺藤摸瓜,找到表内的元素,最后再按照行列将数据写入到Excel中就可以了:

    xlwt是一个比较简单方便写入Excel表的模块:xlwt API介绍。主要用到的就是xlwt.Worksheet.Worksheet类的write方法,向指定坐标的单元格写入文字。

    enc = response.encoding
    workbook = xlwt.Workbook(encoding='utf-8')
    sheet = workbook.add_sheet('sheet1')
    
    col,row = 0,0
    table = data.contents[1]
    for row_items in table.contents:
        for item in row_items.contents:
            item_str = item.getText().encode(enc).decode('utf-8')
            sheet.write(row, col, item_str)
            col += 1
        row += 1
        col = 0

    注意:网页的编码格式可以通过requests.models.Response类中的成员encoding获取。比如,这个网页的编码格式就是ISO-8859-1的格式,不是我们常用的UTF-8格式,所以在获取文字的时候需要进行一个转码的操作。

    最后,保存Excel文件即可:

    with open(path, 'wb') as f:
        workbook.save(f)

    完整代码

    import requests
    import xlwt
    from bs4 import BeautifulSoup
    
    url = 'http://www.shaanxi.gov.cn/xw/ztzl/zxzt/zkzl/2021/2021gwy/202102/t20210222_2153937.html'
    
    path = r'F:\Code\Python\crawler\陕西省2021年统一考试录用公务员职位表.xls'
    
    headers = {
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36",
    }
    
    response = requests.get(url)
    print("get response success!")
    soup = BeautifulSoup(response.text, 'html.parser')
    print("soup parser success!")
    data = soup.find('table')
    if len(data) > 0:
        print("get data sucess!")
    else:
        print("get data failed!")
        exit(1)
    
    enc = response.encoding
    print("encoding = ", enc)
    
    workbook = xlwt.Workbook(encoding='utf-8')
    sheet = workbook.add_sheet('sheet1')
    
    col,row = 0,0
    table = data.contents[1]
    for row_items in table.contents:
        for item in row_items.contents:
            item_str = item.getText().encode(enc).decode('utf-8')
            sheet.write(row, col, item_str)
            col += 1
        row += 1
        col = 0
    
    print("gather data sucess!")
    
    with open(path, 'wb') as f:
        workbook.save(f)
    
    print("save data sucess!")

    生成的Excel内容:

    最后

    我还是个爬虫菜鸟,只能爬一些不设防的简单网页。

    展开全文
  • 目的:输入要爬取的职位名称,五个意向城市,爬取智联招聘上的该信息,并打印进表格中 ####基本环境配置: Python版本:2.7 开发工具:pycharm 系统:win10 ####相关模块: import urllib2 import re import xlwt ...
  • 学了没多长时间python就开始接触爬虫(被一名学长带进了爬虫的坑,感谢学长的指导),看了网上的一些视频,简单的了解了python的requsts库,bs4,就可以实现一个网页的最简单的爬虫(其实就是用几行代码把某个网页的...
  • 目的:输入要爬取的职位名称,五个意向城市,爬取智联招聘上的该信息,并打印进表格中 #coding:utf-8 import urllib2 import re import xlwt class ZLZP(object): def __init__(self,worknam...
  • python爬虫爬取table数据-超简单

    千次阅读 2019-04-09 19:53:09
    用pandas的read_html()方法 for df in pd.read_html(url): df.to_csv(path, mode='a',encoding='utf-8',header=0,index=False) 每一个页面的多个表格循环写入csv文件
  • Python爬虫爬取快代理上的免费代理

    千次阅读 2018-09-05 22:36:47
    目标网站:https://www.kuaidaili.com/free/ 对目标网站进行分析: 发现点击下一页时,url的变化只有最后的数字在变化,因此用一个... 定义一个函数来获取网页信息: ...最后用Excel表格来存储:      ...
  • 本编博客是关于爬取天猫店铺中指定店铺的所有商品基础信息的爬虫爬虫运行只需要输入相应店铺的域名名称即可,信息将以csv表格的形式保存,可以单店爬取也可以增加一个循环进行同时爬取。 源码展示 首先还是完整...
  • 会从51job网站上爬取招聘工作的信息,保存到cvs表格文件中,和数据库中,然后把表格中的数据压缩,通过邮箱发送给别人。 运行输出 0x02注意点 1.采集数据动态网站和静态网站是不同的,静态网站用可以接收到html,...
  • 即是爬取该网站2013年12月2日至2018年11月份北京空气质量指数历史数据,其中要爬起的 内容如PM2.5,So2等,即是从这个网页内置的表格爬取,因为该网站比较有规律,代码实现不是很难,爬取上述表格数据,存储为csv...
  • Python爬虫-爬取wallhaven壁纸

    千次阅读 多人点赞 2021-03-18 21:28:08
    Python爬虫-爬取wallhaven壁纸前言可行性分析功能介绍效果展示基本思路1.获取每页壁纸的url2.获取每张壁纸缩略图的url具体步骤如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一...
  • 文章目录Python--爬虫爬取的数据保存到excel一、excel表格存储二、python3.9没有自带的xlwt模块和xlrd,需要自行下载三、代码实现 一、excel表格存储 ​ 利用python库xlwt将抽取的数据datalist写入excel表格,分四步...
  • Python3爬虫爬取淘宝商品数据

    千次阅读 2019-02-01 17:38:11
    这次的主要的目的是从淘宝的搜索页面获取商品的...然后将获取的信息写入excel表格保存起来,这次只爬取了前面10页 的内容。在运行代码的过程中发现,30页后面的数据有问题,出现了手机价格为0的情况,这是不符合实际...
  • Pyrhont:网络爬虫爬取某表情包网站 参考: 爬虫基础知识点汇总(html文件基础和4个常用库 超级详细长文预警) 【爬虫教程】吐血整理,最详细的爬虫入门教程~ HTML的简单介绍 HTML的全称为超文本标记语言,是一种标记...
  • 学习了几天的Python爬虫,写了一段代码爬取某东三星手机自营店数码产品数据作数据分析使用,仅供参考学习,转载请注明网址 废话不多说直接上代码。 import requests from lxml import etree from bs4 import ...
  • python3 爬取网页表格例子

    千次阅读 2018-09-21 10:35:50
    很简洁明了的爬虫例子,分享给大家 #网址如下:http://www.maigoo.com/news/463071.html from bs4 import BeautifulSoup  import requests  import csv  import bs4    #检查url地址  def chec...
  • 本文简单使用python的requests库及re正则表达式对淘宝的商品信息(商品名称,商品价格,生产地区,以及销售额)进行了爬取,并最后用xlsxwriter库将信息放入Excel表格。最后的效果图如下: 提示:以下是本篇文章...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 414
精华内容 165
关键字:

python爬虫爬取表格

python 订阅
爬虫 订阅