首页 > 其他分享 >2023爬虫学习笔记 -- 解决爬虫Cookies问题

2023爬虫学习笔记 -- 解决爬虫Cookies问题

时间:2023-02-25 13:01:07浏览次数:34  
标签:Cookies -- 爬虫 地址 内容 print div com id


一、目标地址

https://xXXXXu.com/

二、分析要获取的内容

1、获取这些用户名字



2023爬虫学习笔记 -- 解决爬虫Cookies问题_数据解析


2、通过刷新页面,发现内容是通过Ajax加载,主要是通过max_id参数获取内容



2023爬虫学习笔记 -- 解决爬虫Cookies问题_Powered by 金山文档_02


3、找到起始的max_id



2023爬虫学习笔记 -- 解决爬虫Cookies问题_python_03


三、代码实现

1、通过session自动获取相关cookie信息,没有cookie该网站禁止获取信息

se对象=requests.session()
'items[0].original_status.user.screen_name'
头={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"
}
首地址="https://xXXXX.com/"
se对象.get(url=首地址,headers=头)

2、通过正则获取max_id的起始值

t=re.findall('is_private":false}},{"id":(.*?),"category":',响应内容.text)
print(t)

3、构造Ajax动态网址

动态目标地址='https://XXXX.com/statuses/hot/listV2.json?since_id=-1&max_id={}&size=15'
for i in range(1,4):
if i==1:
目标地址 = "https://XXXX.com/"
else:
目标地址 = 动态目标地址.format(int(t[-1])-(i-2)*15)
print(目标地址)

4、第一页内容通过xpath获取

if 目标地址 == "https://xXXXX.com/":
相应内容 = se对象.get(url=目标地址, headers=头)
相应内容.encoding="utf-8"
数据解析=etree.HTML(相应内容.text)
数据列表=数据解析.xpath('//*[@id="app"]/div[3]/div[1]/div[2]/div[2]/div[1]/div/div/div/a[2]/text()')
print(数据列表)

5、第二页往后通过JSON数据获取用户名信息

相应内容 = se对象.get(url=目标地址, headers=头).json()
#print(相应内容)
#print(type(相应内容))
#print(相应内容["items"])
for i in 相应内容["items"]:
print(i['original_status']['user']['screen_name'])

6、运行结果



2023爬虫学习笔记 -- 解决爬虫Cookies问题_python_04


7、源码

import os.path
import re
import time
from lxml import etree
import requests




se对象=requests.session()


头={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"
}
首地址="https://XXXX.com/"
响应内容=se对象.get(url=首地址,headers=头)
#print(响应内容.text)


t=re.findall('is_private":false}},{"id":(.*?),"category":',响应内容.text)
print(t)


动态目标地址='https://XXXX.com/statuses/hot/listV2.json?since_id=-1&max_id={}&size=15'
for i in range(1,4):
if i==1:
目标地址 = "https://XXXXX.com/"
else:
目标地址 = 动态目标地址.format(int(t[-1])-(i-2)*15)
print(目标地址)
if 目标地址 == "https://XXXXX.com/":


相应内容 = se对象.get(url=目标地址, headers=头)
相应内容.encoding="utf-8"
数据解析=etree.HTML(相应内容.text)
数据列表=数据解析.xpath('//*[@id="app"]/div[3]/div[1]/div[2]/div[2]/div[1]/div/div/div/a[2]/text()')
print(数据列表)
else:
相应内容 = se对象.get(url=目标地址, headers=头).json()
#print(相应内容)
#print(type(相应内容))
#print(相应内容["items"])
for i in 相应内容["items"]:
print(i['original_status']['user']['screen_name'])

标签:Cookies,--,爬虫,地址,内容,print,div,com,id
From: https://blog.51cto.com/u_15288375/6085316

相关文章

  • pgpool-II使用问题之SCRAM方法错误
    本机环境:centos7.9,postgres14,pgpool-II,流复制,一主一从假设postgres同步已经做好,pgpool-II能启动SCRAM方法错误当您使用psql或navicat账密方式连接pgpool时,会有个scram身......
  • 注解是怎么实现的
    全文基础:​注解实现原理​​下面是对这篇文章的一点理解具体这里的代码怎么写,静候佳音~......
  • B3612 【深进1.例1】求区间和
    【深进1.例1】求区间和题目描述给定$n$个正整数组成的数列$a_1,a_2,\cdots,a_n$和$m$个区间$[l_i,r_i]$,分别求这$m$个区间的区间和。输入格式共$n+m+2$......
  • Hadoop3 Yarn ha搭建及测试排错
    1.YarnHa原理ResourceManager记录着当前集群的资源分配和Job运行状态,YarnHa利用Zookeeper等共享存储平台来存储这些信息以达到高可用。利用Zookeeper实现ResourceManag......
  • 记录一下使用VScode运行C/C++程序
    三个文件:c_cpp_properties.json、launch.json、tasks.json1.c_cpp_properties.json的生成第一步:   第二步   则会生成   2.tasks.json  3.la......
  • 小程序瀑布流
    效果:一开始的思路是使用第三方插件,但是尝试了两个插件都不行,使用HbuildVUE写的项目,目前还是不会使用插件sad用别的方案吧:将数据源图片数组拆成左右两个数组,分别渲......
  • classification_report()评估报告
    1、使用数据生成器后获得标签映射方法一:labels=[kforkintrain_generator.class_indices]方法二:1labels=[None]*len(test_generator.class_indices)2fo......
  • [LeetCode] 1332. Remove Palindromic Subsequences 删除回文子序列
    Youaregivenastring s consisting only ofletters 'a' and 'b'.Inasinglestepyoucanremoveone palindromicsubsequence from s.Return the mi......
  • 「AcWing学习记录」Trie
    Trie:高效地存储和查找字符串集合的数据结构。AcWing835.Trie字符串统计原题链接#include<iostream>#include<algorithm>usingnamespacestd;constintN=1e......
  • 爬取网页信息遇到的小问题
    在网页头部信息看到:Accept-Encoding:gzip,deflate图片:  而爬到的汉字的部分是乱码: 查看获取响应的数据类型:importreimportrequestsfrombs4importBe......