开发环境windows7/10python3.5.2模拟人工操作

优采云 发布时间: 2021-04-24 06:37

  开发环境windows7/10python3.5.2模拟人工操作

  python爬虫scrapy + Selenium + mysql,抓取微信搜狗,各家银行开具的官方账户文章

  要求

  由于工作需要,公司要求抓取指定微信公众号文章和各大银行官方网站发布的营销信息。也有招标信息。经过调查,我发现结合使用python的scrapy和硒来模拟手动操作。花了一些时间才能完成任务。这是一条记录。

  开发环境

  windows7 / 10

  python 3. 5. 2

  mysql 5. 5

  草率的1. 6

  pycharm2018

  Google Chrome 7 0. 0. 353 8. 110(正式版)(64位)

  安装

  通常在Windows上安装python 3. 5. 2。我选择了官方网站的64位版本。请注意:

  1、添加环境变量:

  

  图片

  python所在的目录:C:\ Users \ user \ AppData \ Local \ Programs \ Python \ Python35;

  pip所在的目录:C:\ Users \ user \ AppData \ Local \ Programs \ Python \ Python35 \ Scripts;

  分析:将以上两条路径添加到环境变量中。

  

  图片

  

  图片

  2、 pycharm安装。

  使用pycharm作为编辑器,因为它具有强大的导入功能。他的某些导入软件包对于管理自己导入的第三方软件包非常方便。

  

  图片

  

  图片

  *******************************注意************** * *************

  如果您正在下载和安装scrapy,则可以在报告Twisted版本错误且pip不成功时手动安装Twisted-1 8. 9. 0-cp35-cp35m-win_amd6 4. whl。

  1)确保您的点子版本是最新的

  2)运行pip安装路径\ Twisted-1 8. 7. 0-cp37-cp37m-win_amd6 4. whl

  参考:

  参考:〜gohlke / pythonlibs /#twisted

  Twisted-1 8. 7. 0-cp37-cp37m-win_amd6 4. whl我是从上面的链接下载的

  3、要使用硒作为模拟手动操作的自动测试,您需要先下载相应的浏览器驱动程序

  因为我使用的是Google Chrome浏览器,所以我下载的也是Google Chrome浏览器驱动程序

  参考:

  参考:

  现在您可以正式工作了! (手动狗头)爬行微信搜狗

  

  图片

  

  图片

  

  图片

  由于微信公众号已发布到最新文章,因此可以在微信搜狗页面上找到指定官方账号所发布的最新内容,因此我们的目标非常明确,即可以抓取该微信发布的最新消息。微信搜狗的官方帐户。

  1、确认抓取链接

  经过分析,具有爬网的链接具有以下特征:

  链接组成:官方帐号

  使用scrapy抓取与该链接相对应的静态内容后,您会发现与该链接相对应的标记将被重定向到输入302输入验证码的页面,这可能是反挑剔技术的微信搜狗。 (但是有解决方案)

  

  图片

  

  图片

  

  图片

  这时,我们将使用功能强大的硒作为模拟手动点击的自动化测试工具。可以使用python下载此第三方软件包。

  直接上传代码

  

class SeleniumMiddleware(object):

def __init__(self):

self.cookies_file_path = COOKIES_FILE_PATH

def process_request(self, request, spider):

options = webdriver.ChromeOptions()

# 设置中文

options.add_argument('lang=zh_CN.UTF-8')

#options.add_argument('--headless')

#options.add_argument('--disable-gpu')

#options.add_argument('--remote-debugging-port=9222')

# 更换头部

options.add_argument('user-agent='+request.headers['User-Agent'].decode(encoding='utf-8'))

browser = webdriver.Chrome(

executable_path=SELENIUM_CHROME_DIRVER_LOCAL_PATH,

chrome_options=options)

wait = WebDriverWait(browser, 15)

browser.get(request.url)

'''设置selenium浏览器的cookie'''

with open(self.cookies_file_path, 'r')as f:

listCookie = json.loads(f.read())

time.sleep(1)

browser.delete_all_cookies();

for cookiein listCookie:

browser.add_cookie({

# 'domain': cookie['domain'],

# 'httpOnly': cookie['httpOnly'],

'name': cookie['name'],

# 'path': cookie['path'],

# 'secure': cookie['secure'],

'value': cookie['value'],

# 'expiry': None if 'expiry' not in cookie else cookie['expiry']

})

# browser.close()

browser.get(request.url)

time.sleep(5)

# 根据公众号查找

gzhDetail = wait.until(EC.element_to_be_clickable(

(By.CSS_SELECTOR, 'ul.news-list2>li:first-child>div.gzh-box2>div.txt-box>p:first-child>a')))

gzhDetail.click()

time.sleep(3)

# 更换到刚点击开的页面

newWindowHandler = browser.window_handles[-1]

browser.switch_to.window(newWindowHandler)

#返回页面

true_page = browser.page_source

res=HtmlResponse(request.url,body = true_page,encoding ='utf-8',request = request,)

#记录搜狗微信公众临时生成的gotoLink的地址,注意该地址是微信搜狗经常会切换的地址。

res.meta['wxsgGzhDetailUrl']=browser.current_url

browser.quit()

return res

def process_response(self, request, response, spider):

return CodeMiddleware().process_response(request,response,spider)

  如果成功模拟了手动单击,则不会跳到302输入验证码,因此无需使用编码平台。成功单击后,进入正式帐户发布文章页面。此时,您可以检索官方帐户发布的文章的标题,简介和图片。 (访问该页面时,可以直接引用一个标签来输入详细的文章,这意味着可以向下检索特定的文章内容。)

  最后

  我的github:其中有更详细的代码。记住要给星星,还有其他例子。本文中的示例位于weixinsougou文件夹中

  备注

  1、解决Windows命令行中找不到的pip命令的方法:

   1)找到安装python.exe的文件夹

2)添加Script文件夹路径到环境变量当中。环境:C:\Users\user\AppData\Local\Programs\Python\Python35\Scripts

  2、解决了在安装scrapy时无法安装scrapy的问题。当报告扭曲版本错误时:

   1)手动安装Twisted-18.9.0-cp35-cp35m-win_amd64.whl文件即可解决

2)运行 pip install 你的路径\Twisted-18.7.0-cp37-cp37m-win_amd64.whl

  参考:

  参考:〜gohlke / pythonlibs /#twisted

  3、该项目使用硒,因此请安装Google Chrome。以及相应的Google Chrome浏览器驱动程序。

  参考:

  参考:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线