请求数据的格式如果是json
形式数据,参数改成json
代替data
。这样就不用json.dumps(data)
转换了
def login(img_code):
login_url = 'https://www.xxx/login'
h = headers
dic = {"username":"cs_5oglbf","password":"9f90077a364ef9101364ed3ea0eb7761","captcha":img_code}
#ret = sess.post(url=login_url, headers=h,data=json.dumps(dic)).text
ret = sess.post(url=login_url, headers=h, json=dic).text
scrapy框架手动爬取所有页面,找到规律拼接页面或者在本页面中拿到下一页的url
,进行手动翻页。
def parse(self, response):
tr_list = response.xpath("xxxx")
for tr in tr_list:
title = tr.xpath('./td[2]/a[2]/text()').extract_first()
item = SunproItem()
item['title'] = title
yield item
if self.page <= 120:
new_url = f'{self.url}{self.page}'
self.page += 30
yield scrapy.Request(url=new_url, callback=self.parse, formdata=None)
scrapy 中如何手动发 post 请求, formdata
相当于data
数据。但一般不发送
yield scrapy.FormRequest(url, formdata, callback)
Xpath 解析
解析原理
实现一个 etree对象,且将被解析的数据加载到该对象中
- 解析本地存储的html文档:
- etree.parse('fileName')
- 解析网上爬取的html文档:
- etree.HTML(page_text)
BeautifulShop
WechatIMG528.png WechatIMG527.png
WechatIMG528.png
WechatIMG525.png
Jupyter的基本使用
WechatIMG518.png
scrapy 请求传参实现深度爬取 如果数据不在一个页面中。我们可以通过meta
传递参数来完成
def parse(self, response):
name = "123"
item = S()
item["name"] = name
yield scrapy.Request(url, callback= sself.parse_detail, meta ={"item":item} )
def parse_detail(self, response):
item = response.meta["item"]
data = "456"
item["data]= data
运用urllib 实现url的拼接
from urllib.parse import urlencode
data = {
"name": "wz",
"age": 20,
"lp": 'tp'
}
url = "http://www.toutou.com/?" + urlencode(data)
http://www.toutou.com/?name=wz&age=20&lp=tp
网友评论