小白的爬虫历程

小白的爬虫历程

    • 需求分析
    • 先演示出爬取成功的结果(期待心~~)
    • 开始工具介绍
    • 具体代码
    • 具体代码解析
    • 具体源码和信息

需求分析

又到了紧张的论文季,收到女神发来的求救函,于是灵机一动,利用掌握的知识和方法-爬虫,来解决找论文、论文题材的问题。
本篇方法只适用基础的的爬虫实践,利用的工具也相对比较简单,由于未学到xpath、bs4等工具,只好使用基础的正则来解析网页,用requests库获取网址,本文的内容大都学习自《Python3网络爬虫开发实战》这本书,在这篇文中你将学到书本中百试不解的一些方法使用的小细节,好了话不多说,我们便开始这篇这篇小文章!
由于,第一次写博客,水平欠差,不喜勿喷,大神之路遥遥无期,只好一步一步踏实追赶!
[此地址可简约查看推荐书籍内容](https://book.douban.com/subject/30175598/)

先演示出爬取成功的结果(期待心~~)

小白的爬虫历程_第1张图片
仅仅只是部分代码哦!

开始工具介绍

  1. 一个代码编写工具,我使用的是visual studio code
  2. 需要安装requests库
    window:pip install requests
    linux:pip3 install requests

具体代码

#!/usr/bin/python3
#! _*_ coding:utf-8 _*_

'''
爬取市场营销栏目的论文
'''

import re 
import requests
import time
import json
from requests.exceptions import RequestException

#get_one_page()函数用于获取要获取的url网页内容
def get_one_page(url):
    headers = {'User-Agent':'Mozilla/5.0 (Macintosh;Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/52.0.2743.116 Safari/537.36'}
    response = requests.get(url,headers = headers)
    if response.status_code == 200:
        return response.text
    return None

#parse_one_page()函数中传入要解析的网页内容
def parse_one_page(html):
    #生成正则对象
    pattern = re.compile('
  • (.*?)(.*?)',re.S) item = re.findall(pattern,html) for i in item: yield{ '时间':i[0], '网址':i[1], '标题':i[2] } def write_to_file(content): with open ('论文2.txt','a',encoding='utf-8') as f: f.write(json.dumps(content,ensure_ascii=False) + '\n') def main(addr): url='http://www.lunwendata.com/61_{page}.html'.format(page = addr) print(url) html = get_one_page(url) for r in parse_one_page(html): write_to_file(r) if __name__ == '__main__': for r in range(30): main(addr = r) time.sleep(1)
  • 具体代码解析

    • get_one_page() 获取网页源代码

    网页解析

    爬取网页点击进入

    • F12进入开发者工具

    • 查看Network,相关页面网络的响应
      需求网址
      对应目标内容

    • 进入后,我们就可以查看他的正文
      小白的爬虫历程_第2张图片

    • 我们想要的内容全在

        这个节点中

      • requests中headers介绍
        对于防范比较高的网站是具有反爬虫机制的,当然这个网站并不存在,从简单网站起手,小白白第一步,开心脸
        但我们还是要养成习惯来掩盖请求资源:headers = {‘User-Agent’:‘Mozilla/5.0 (Macintosh;Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/52.0.2743.116 Safari/537.36’}比如这一行代码,便模拟的是Mozilla的浏览器访问

      正则解析

      这里我们观察节点变化,首先我们先锁定我们的目标内容,这里我的目标内容是:节点和节点以及之间的内容,这里注意一定要匹配准确,否则匹配的内容是有差别的

    • (.?)?>(.?)’
      时间 网址 标题
      • 我们要匹配的目标内容要以(.?)的方法,这里最简便的方式便是,观察节点,精确节点,不需要的内容都以**.?**来代替

      URL拼接

      • 第一种,即本文的format()Python高阶函数方法
      • 第二种,参数传参
      • 或有其他方法,这里不再赘述

      json
      json是jQuery中的一种属性,主要的特征是字典传参,这里yield返回一个json对象,将字典形式的文本写入到指定文件中

      具体源码和信息

      https://github.com/somebady111/spider

      关键字:Python requests re URL拼接 json格式写入文件

      你可能感兴趣的:(spider)