淘宝网站登录,使用:requests和cookies
- 注册淘宝并登录
- 复制cookie
#!coding:utf-8
import requests
url = 'https://login.taobao.com/member/login.jhtml'
header = {
'Cookie': '你的cookie',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36'
}
print(requests.get(url, headers=header).text)
使用scrapy自动登录学校信息门户网站(http://sep.ucas.ac.cn/)
- 创建scrapy模板在,在目标文件夹下使用cmd(需要配置好python的环境变量)
按如下顺序执行命令
- mkdir fileName
- scrapy startproject fileName
- cd fileName\fileName\spiders
- scrapy genspider -t basic spiderName 爬取的网站域名
到此已经创建好了scrapy的模板
- 编辑login.py文件
# -*- coding: utf-8 -*-
import scrapy
from scrapy.http import Request, FormRequest
class LoginSpider(scrapy.Spider):
name = 'login' # 爬虫的名称,启动时需要使用这个爬虫名
allowed_domains = ['https://sep.ucas.ac.cn/'] # 爬虫允许爬取的域的范围
start_urls = ['https://sep.ucas.ac.cn'] # 第一次启动时的url地址,每次的请求都在调度器中进行排队
header = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1"}
# 编写start_requests()方法,第一次会默认调取该方法中的请求
def start_requests(self):
# 首先爬一次登录页,然后进入回调函数parse()
return [Request("https://sep.ucas.ac.cn",meta={"cookiejar":1},callback = self.parse)]
def next(self, response):
print(response.body) # 打印相应文件的body标签下的内容
print("Successful!!!")
# 每次Request返回的Response文件都会调用parse(解析)进行处理
# 运行爬虫后,名为 parse() 的方法将会被自动调用
def parse(self, response):
# 设置要发送的post信息
data = {
'userName': 'good luck to you', # 输入你自己的账号
'pwd': '********', # 输入你自己的密码
'sb': 'sb'
}
print("登入中...")
return FormRequest(
url='https://sep.ucas.ac.cn/slogin',
method='post',
formdata=data,
meta={'cookiejar': response.meta['cookiejar']},
# 如果需要多次提交表单,且url一样,那么就必须加此参数dont_filter,防止被当成重复网页过滤掉了
dont_filter=True,
callback=self.next
)
- 运行
scrapy crawl login
学校网站的POST登录请求文件
使用Scrapy爬取学校网站教学科研的新闻(https://www.ucas.ac.cn/site/26)
- 要求爬取:新闻的标题、链接和日期
- 分别使用:基本爬虫和自动爬虫
- 基本爬虫
# ********************主文件.py文件中代码************************
# -*- coding: utf-8 -*-
# 基本爬虫
import requests
import scrapy
from scrapy.http import Request, FormRequest
from ..items import UcasnewsItem
from scrapy.selector import Selector
class LoginSpider(scrapy.Spider):
name = 'ucasNews' # 爬虫的名称,启动时需要使用这个爬虫名
allowed_domains = ['https://sep.ucas.ac.cn/'] # 爬虫允许爬取的域的范围
start_urls = ['https://www.ucas.ac.cn/site/26?pn=1'] # 第一次启动时的url地址,每次的请求都在调度器中进行排队
# 每次Request返回的Response文件都会调用parse(解析)进行处理
# 运行爬虫后,名为 parse() 的方法将会被自动调用
def parse(self, response):
items = []
item = UcasnewsItem() # 需要提前import
sel = Selector(response)
for j in range(1, 21): # item不是字典类型,继承自字典类型,无法使用append函数
item['news_url'] = sel.xpath("/html/body/div[4]/div[2]/div[2]/div[3]/p[" + str(j) + "]/a/@href").extract()
item['news_title'] = sel.xpath("/html/body/div[4]/div[2]/div[2]/div[3]/p[" + str(j) + "]/a/@title").extract()
item['news_date'] = sel.xpath("/html/body/div[4]/div[2]/div[2]/div[3]/p[" + str(j) + "]/span/text()").extract()
print(item)
# *******************items.py文件中*****************************
# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.html
import scrapy
class UcasnewsItem(scrapy.Item):
news_title = scrapy.Field() #新闻标题
news_date = scrapy.Field() #新闻时间
news_url = scrapy.Field() #新闻的详细链接
- 自动爬虫
在这里插入代码片