首页 > 其他分享 >爬虫 | 基本步骤和解析网页的几种方法

爬虫 | 基本步骤和解析网页的几种方法

时间:2024-06-05 18:47:01浏览次数:21  
标签:csv group writer 爬虫 entity headers 网页 解析 open

爬虫的步骤可以简单的概括为:

  1. 获取网页并拿到HttpResponse对象,一般都是urllib库或者requests库
    # 设置要爬取的网页,以及headers伪装浏览器(最基本防反扒手段)
    url = 'https://example.com'
    headers = {
"User-Agent":"里面的内容在浏览器--network--选择一个html查看Headers -- requests headers -- User-Agent"
}

    # urllib
    import urllib.request
    response = urllib.request.urlopen(url = url, headers = headers)
    response.read()  #>>>> 读取网页内容

    # requests
    import requests
    response = requests.get(url = url, headers = headers)
    response.text()  #>>>> 读取网页内容
  1. 解析网页(正则、bs4、xpath)
"""正则表达式"""

# 先用compile预加载自定义的正则表达式(这样速度快点)
 entity_regex = re.compile(r'<li>.*?<div class="item">.*?<span class="title">(?P<name>.*?)</span>'
                                  r'.*?<br>(?P<year>.*?)&nbsp'
                                  r'.*?<span class="rating_num" property="v:average">(?P<score>.*?)</span>'
                                  r'.*?<span>(?P<number>\d+)人评价</span>', flags=re.S)
        
        # 用迭代器获取,还可以写作re.finditer(entity_regex, page_content)
        entity_iter = entity_regex.finditer(page_content)

# 从迭代器中将各组数据单独提取,则是group,如果直接提取字典,则是groupdict
        for entity in entity_iter:
        # print(entity.group('name'))
        # print(entity.group('year').strip())  # 因为年份前面有空格,所以用strip
        # # print(type(name.group('year').strip()))  # 用.*?匹配到的数字,格式是str字符串
        # print(entity.group('score'))
        # print(entity.group('number'))
        # # print(type(name.group('number')))  # 用\d+匹配到的数字,格式依旧是str字符串,因为正则匹配到的内容都用str返回

            dic = entity.groupdict()
            dic['year'] = dic['year'].strip()  # 单独处理一下year的空白
  1. 保存(csv)
  最好是一开始就设置好储存文件路径等,如果不想用with open,那就直接用open+close
"""这里最需要注意的就是处理with open 和 for循环的关系,否则一不留神就容易导致dic的值或者文件被反复覆盖,只剩下最后一点数据"""
  
  # 用with open
    with open('top250.csv', 'w', encoding='utf-8') as f:  # 1) 创建一个文档
      csv_writer = csv.writer(f)                          # 2) 创建一个可写对象
      csv_writer.writerow(dic.values())                   # 3)写入

  # 用open + close
      f = open('top250.csv', 'w', encoding='utf-8')       # 1) 创建一个文档
      csv_writer = csv.writer(f)                          # 2) 创建一个可写对象
      csv_writer.writerow(dic.values())                   # 3)写入
      f.close()                                           # 4) 关闭文件
  1. 关闭响应
   response.close() 
'''别忘了!'''

标签:csv,group,writer,爬虫,entity,headers,网页,解析,open
From: https://www.cnblogs.com/abloger/p/18233524

相关文章

  • 爬虫中关于SSL证书的处理(requests库)
    SSL证书是方法一:暴力verify=Falseresponse=requests.get('https://example.com',verify=False)#强烈建议不要在生产环境中使用verify=False,#因为它会使你的请求容易受到中间人攻击(Man-in-the-Middle,MITM)。#当SSL证书验证被绕过时,任何位于你和目标服务器之间......
  • restemplate访问对端,解析异常
    restemplate访问,解析异常的情况try{response=execute(CREATE_PROJECT,HttpMethod.POST,request);}catch(HttpClientErrorExceptione){//处理4xx服务端错误log.error("创建repository异常,repository={},groupId={}"......
  • pdf文件可以转成html网页吗?
    目前我们工作或学习中使用最多的可能就是PDF格式的文档了,它虽然有很多好处,但是有时如果文档比较大,传送就比较麻烦,这时我们将其转换成HTML再发送就很方便了。那么pdf格式怎么转html格式呢?方法一、使用在线pdf转html如果不想下载软件的话,一些在线工具例如smallpdf中文版、speedpdf......
  • 爬虫获取照片
    importrequestsdefget_img_url(keyword):"""发送请求,获取接口中的数据"""#接口链接url='https://image.baidu.com/search/acjson?'#请求头模拟浏览器headers={'User-Agent':'Mozilla/5.0(Win......
  • 从零手撕一个网页版图形编辑器之介绍(1)
    本文将作为连载,陆陆续续把本人最近几年来利用业余时间开发的一个通用的网页版通用二维图形编辑器的开发过程完整写出来,供同学爱好者互相学习、交流图形技术使用。前端使用vue+javascript+canvas,后端springboot+mybatis。本编辑器的功能95%都是在前端实现,后端只是做简单的数据......
  • 解析域名,获取域名ip并输出到终端
    /***author :[email protected]*@functionname: main*@brief:程序实现解析域名(如www.baidu.com),把获取到的域名的IP地址全部输出到终端*@param :@argc:终端输入参数的个数 :@argv[]:终端输入的参数*@date:......
  • STEEL ——首个利用 LLM 检测假新闻的框架算法解析
    1.概述近年来,假新闻的泛滥确实对政治、经济和整个社会产生了深远的负面影响。为了解决这一问题,人们开发了各种假新闻检测方法,这些方法试图通过分析新闻内容、来源和传播方式来识别虚假信息。然而,正如你所提到的,现有的假新闻检测方法存在一些局限性。其中一个主要问题是它......
  • 2024年03月 GESP等级认证Python编程(一级)试题解析
    【单选题】(每题2分)1、小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是?()A、小程序   B、计时器   C、操作系统   D、神话人物   正确答案:C2、中国计算机学会(CCF)在2024年1月27日的颁奖典礼上颁布了王选奖,王选先生的重大贡献是?()A、制......
  • 【机器学习基础】Python编程02:五个实用练习题的解析与总结
    Python是一种广泛使用的高级编程语言,它在机器学习领域中的重要性主要体现在以下几个方面:简洁易学:Python语法简洁清晰,易于学习,使得初学者能够快速上手机器学习项目。丰富的库支持:Python拥有大量的机器学习库,如scikit-learn、TensorFlow、Keras和PyTorch等,这些库提供了......
  • Python网络爬虫要清理cookies 才能再爬,有啥解决方法嘛?
    大家好,我是Python进阶者。一、前言前几天在Python钻石交流群【大写一个Y】问了一个Python基网络爬虫的问题,问题如下:大佬们请教个问题我做了个在某眼查抓地址数据的爬虫,程序中做了随机2-5秒的循环延时,现在大概爬800多个地址,就会查不出数据,要清理cookies才能再爬,有啥解决方法......