【爬虫】Python爬虫的基本思路

Posted on 2023-05-21 09:05  Charlie_ODD  阅读(60)  评论(0编辑  收藏  举报

基础

  • 一句话描述:利用http/https协议,通过python自带的requests相关包,模拟真实的Web浏览器请求,将原本在浏览器所见的内容以代码的形式结构化的保存下所需要的信息。
  • 等价工具:
    • curl
    • 浏览器抓包/F12
  • 抓取任意一个网站的内容:
    • 浏览器访问网站,打开开发者工具,找到所需要信息的URL、headers、及response的结构
    • 使用curl命令复现上一步
    • 编码爬虫脚本,等价编程复现前两步
    • 拿到结果后,通常会对字符编码格式统一处理,response结构解析(json/re正则表达式),最后将“我们感兴趣的信息”做结构化的展示和保存
  • 常用到的包:
import requests
import re
import pandas as pd
import json

示例:大麦演唱会信息

访问官网

官网入口: https://www.damai.cn/
找到演唱会检索信息页面:https://search.damai.cn/search.htm?spm=a2oeg.home.category.ditem_0.591b23e1VeeW0U&ctl=演唱会&order=1&cty=北京

开发者工具

找到想要的信息的url

  • 条件查询项目列表:
    • 找到curl命令:
curl 'https://search.damai.cn/searchajax.html?keyword=&cty=%E5%8C%97%E4%BA%AC&ctl=%E6%BC%94%E5%94%B1%E4%BC%9A&sctl=&tsg=0&st=&et=&order=1&pageSize=30&currPage=2&tn=' \
  -H 'authority: search.damai.cn' \
  -H 'accept: application/json, text/plain, */*' \
  -H 'accept-language: zh-CN,zh;q=0.9' \
  -H 'bx-v: 2.5.0' \
  -H 'cookie: cna=oxcgGJ2s5zUCAd6ywe2CLo4A; xlly_s=1; XSRF-TOKEN=91bc667b-b388-4801-9af5-b6bb519781ae; isg=BP__g5cvp18oPKNCPa5V2QsYjtOJ5FOGR4JodJHN8a6ToB4imbfp1-x24nBe-Cv-; tfstk=cT5NBPAaZ5Fat_7Y2BAV45v7Pu9OaBRDw0TkIkfxpb9E4kpM4svmDejURL9t8mvG.; l=fBLrt9wgNFgHDrQWBO5Bhurza77TfIOb8sPzaNbMiIEGa6OdtaiODNC_fvp6SdtjgT5VqetzEHwxcdUWSz4U-tMot9HJfRskeX9w8eM3N7AN.' \
  -H 'referer: https://search.damai.cn/search.htm?spm=a2oeg.home.category.ditem_0.591b23e1KckJWg&ctl=%E6%BC%94%E5%94%B1%E4%BC%9A&order=1&cty=%E5%8C%97%E4%BA%AC' \
  -H 'sec-ch-ua: "Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "Windows"' \
  -H 'sec-fetch-dest: empty' \
  -H 'sec-fetch-mode: cors' \
  -H 'sec-fetch-site: same-origin' \
  -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36' \
  -H 'x-xsrf-token: 91bc667b-b388-4801-9af5-b6bb519781ae' \
  --compressed
  • 用代码模拟curl url+headers+payload
  todo