cookie模拟登陆淘宝

1、获取cookies,这里用的是selenium库的get_cookies()函数:

from selenium import webdriver
import time
import requests
import re

headers ={
    "User-Agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.41 Safari/537.36'
}`在这里插入代码片`

browser = webdriver.Chrome()
url = 'https://login.taobao.com/member/login.jhtml'
browser.get(url)
time.sleep(20)  # 留20秒或者更长的时间来手动进行登录;推荐扫码登陆
cookies = browser.get_cookies()  # 获取Cookie
print (cookies)

打印输出后获得的是一个列表,列表元素包含一个个字典,字典中包含各个cookie信息
在这里插入图片描述
2、创建一个cookies_dicth空字典,存储从各个cookie提取到的name和value,处理成requests库使用cookies时所需要的格式:
代码如下

cookie_dict = {}
for item in cookies:
    cookie_dict[item['name']] = item['value']

3、使用获取到的cookies利用requests登陆指定url,获取源代码并打印输出,代码如下:

url = 'https://s.taobao.com/search?q=大码女装'
res = requests.get(url, headers=headers, cookies=cookie_dict).text

print(res)

打印结果如下:
在这里插入图片描述
4、根据获取到的源代码,我们可以写出相应的正则表达式提取所需的内容,这里我们以提取标题、价格、付款人数为例,代码如下:

title = re.findall('"raw_title":"(.*?)"', res)
price = re.findall('"view_price":"(.*?)"', res)
sale = re.findall('"view_sales":"(.*?)人付款"', res)

for i in range(len(title)):
    print(title[i] + ',价格为:' + price[i] + ',销量为:' + sale[i])

打印输出后的结果如下:
在这里插入图片描述
至此,我们完成了cookies模拟登陆淘宝并爬取数据,完整代码如下:

from selenium import webdriver
import time
import requests
import re
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}

# 1.模拟登陆 + 获取Cookie
browser = webdriver.Chrome()
url = 'https://login.taobao.com/member/login.jhtml'
browser.get(url)
time.sleep(20)  # 留20秒或者更长的时间来手动进行登录;推荐扫码登陆
cookies = browser.get_cookies()  # 获取Cookie

# 2.修改Cookie数据格式
cookie_dict = {}
for item in cookies:
    cookie_dict[item['name']] = item['value']

# 3.Requests库使用Cookie
url = 'https://s.taobao.com/search?q=王宇韬'
res = requests.get(url, headers=headers, cookies=cookie_dict).text

# 验证是否登录成功
if 'fgwyt94' in res:
    print('登录成功')

# 4.正则表达式提取信息
title = re.findall('"raw_title":"(.*?)"', res)
price = re.findall('"view_price":"(.*?)"', res)
sale = re.findall('"view_sales":"(.*?)人付款"', res)

for i in range(len(title)):
    print(title[i] + ',价格为:' + price[i] + ',销量为:' + sale[i])
  • 12
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用Java模拟登陆的示例代码: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.List; import java.util.Map; public class LoginDemo { public static void main(String[] args) throws Exception { String loginUrl = "http://example.com/login"; String username = "your_username"; String password = "your_password"; // Create a new URL object URL url = new URL(loginUrl); // Create a new HttpURLConnection object HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // Set the request method to POST connection.setRequestMethod("POST"); // Set the request headers connection.setRequestProperty("User-Agent", "Mozilla/5.0"); connection.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); // Set the request parameters String params = "username=" + URLEncoder.encode(username, "UTF-8") + "&password=" + URLEncoder.encode(password, "UTF-8"); connection.setDoOutput(true); connection.getOutputStream().write(params.getBytes("UTF-8")); // Send the request int responseCode = connection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { // Read the response BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); // Print the response System.out.println(response.toString()); // Get the cookies from the response headers Map<String, List<String>> headerFields = connection.getHeaderFields(); List<String> cookiesHeader = headerFields.get("Set-Cookie"); if (cookiesHeader != null) { // Parse the cookies and store them in a CookieManager object java.net.CookieManager cookieManager = new java.net.CookieManager(); for (String cookie : cookiesHeader) { cookieManager.getCookieStore().add(null, HttpCookie.parse(cookie).get(0)); } // Use the CookieManager to send subsequent requests with the cookies URL newUrl = new URL("http://example.com/protected_page"); HttpURLConnection newConnection = (HttpURLConnection) newUrl.openConnection(); cookieManager.getCookieStore().getCookies().forEach(c -> newConnection.addRequestProperty("Cookie", c.toString())); int newResponseCode = newConnection.getResponseCode(); if (newResponseCode == HttpURLConnection.HTTP_OK) { // Read the response BufferedReader newIn = new BufferedReader(new InputStreamReader(newConnection.getInputStream())); String newInputLine; StringBuffer newResponse = new StringBuffer(); while ((newInputLine = newIn.readLine()) != null) { newResponse.append(newInputLine); } newIn.close(); // Print the response System.out.println(newResponse.toString()); } else { System.out.println("Failed to fetch protected page"); } } } else { System.out.println("Failed to login"); } } } ``` 此代码将使用POST请求发送用户名和密码到登录页面。如果登录成功,它将获取响应标头中的cookie,并将其存储在CookieManager对象中。然后,它将使用CookieManager对象向受保护的页面发送新请求,并在请求中添加所有cookie。如果此请求成功,它将打印受保护页面的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值