美文网首页
爬虫小技巧

爬虫小技巧

作者: 王镇_ee87 | 来源:发表于2021-01-13 09:05 被阅读0次

请求数据的格式如果是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

相关文章

网友评论

      本文标题:爬虫小技巧

      本文链接:https://www.haomeiwen.com/subject/fwobwktx.html