1. 程式人生 > >python 爬蟲 如何通過scrapy簡單模擬登陸豆瓣網,手動進行圖形驗證碼的驗證

python 爬蟲 如何通過scrapy簡單模擬登陸豆瓣網,手動進行圖形驗證碼的驗證

1.建立scrapy爬蟲程式,在terminal命令列輸入’scrapy startproject douban_login’ 2.建立爬蟲主程式,主要步驟都在這裡實現,以douban_login.py命名 程式程式碼如下:

import scrapy
from scrapy.spider import CrawlSpider
from urllib import request
from PIL import Image#載入驗證碼圖片的模組
#登陸豆瓣主程式
class Douban_login(CrawlSpider):
    name = 'douban_login'
    allowed_domains = ['douban.com']
    start_urls = ['https://accounts.douban.com/login']
    log_in = 'https://accounts.douban.com/login'

    def parse(self, response):
        #建立一個可以進行填寫模擬登陸資訊的字典
        formdata = {
            'source':'None',
            'redir':'https://accounts.douban.com/login',
            'form_email':'
[email protected]
', 'form_password':'xl7187596', 'remember':'on', 'login':'登入' } #獲取填寫登入資訊的物件 captcha_url = response.css('img#captcha_image::attr(src)').get() #如果存在,填入對應的登入資訊 if captcha_url: captcha =self.captcha_img(captcha_url) formdata['captcha-solution'] = captcha captcha_id = response.xpath('//input[@name="captcha-id"]/@value').get() formdata['captcha-id'] = captcha_id #提交請求 yield scrapy.FormRequest(url =self.log_in,formdata=formdata,callback=self.parse_login) #判斷是否登陸成功 def parse_login(self,response): if response.url == 'https://www.douban.com/': print("登入成功") else: print("登陸失敗") #獲取圖形驗證碼並手動填入 def captcha_img(self,imgurl): request.urlretrieve(imgurl,'captcha.png') image = Image.open('captcha.png') image.show() captcha = input("請輸入驗證碼:") return captcha

3.進入settings設定瀏覽器頭部並開啟 改寫程式碼如下:

DEFAULT_REQUEST_HEADERS = {
  'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'Accept-Language': 'en',
'User-Agent':'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50'
}

4.建立執行函式main.py檔案 寫入程式碼如下:

from scrapy import cmdline

cmdline.execute('scrapy crawl douban_login'.split())

執行就可以模擬登陸豆瓣並進行圖形驗證碼的驗證了