企查查爬虫python实现(一)整体方法

这篇具有很好参考价值的文章主要介绍了企查查爬虫python实现(一)整体方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目标:

  • 通过excel的公司名获取对应的公司的url,写入excel。

一、安装chromedriver

  1. 在google上输入:chrome://version/,查询自己的版本号,如:97.0.4692.99 (正式版本) (64 位)
  2. 选择chromedriver版本号下载,要和自己chrome的版本号前三段匹配,下载chromedriver_win32.zip类似这种文件名的文件。
  3. 下载链接:下载地址1,下载地址2,下载地址3

企查查爬虫python,爬虫,selenium,爬虫,python,chrome

解压后把驱动文件chromedriver.exe的文件夹路径加到Path环境变量里。

(这里建议用户环境和系统环境的path都加上驱动文件的路径。)

win10 打开环境变量

企查查爬虫python,爬虫,selenium,爬虫,python,chrome

企查查爬虫python,爬虫,selenium,爬虫,python,chrome

 键盘按win+r,输入cmd,打开命令窗口,输入chromedriver,如下图则成功配置。

企查查爬虫python,爬虫,selenium,爬虫,python,chrome

二、selenium+chromedriver 获取公司信息

 1、提前用pip安装库,安装前先确保pip的版本是最新的

在cmd命令窗口输入python -m pip install --upgrade pip

async-generator==1.10
attrs==22.1.0
certifi==2022.9.24
cffi==1.15.1
charset-normalizer==2.1.1
cryptography==38.0.3
et-xmlfile==1.1.0
exceptiongroup==1.0.4
h11==0.14.0
idna==3.4
lxml==4.9.1
numpy==1.23.4
openpyxl==3.0.10
outcome==1.2.0
pandas==1.5.1
pycparser==2.21
pyOpenSSL==22.1.0
PySocks==1.7.1
python-dateutil==2.8.2
pytz==2022.6
requests==2.28.1
selenium==4.2.0
six==1.16.0
sniffio==1.3.0
sortedcontainers==2.4.0
trio==0.22.0
trio-websocket==0.9.2
urllib3==1.26.12
urllib3-secure-extra==0.1.0
wsproto==1.2.0

2、 确定要爬取的字段,输入企查查用户名和密码

import re
import time
from collections import defaultdict

import pandas as pd
import requests
from lxml import etree
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException, WebDriverException
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By

# 确定要爬取的字段
credit_code = []
registered_capital = []

check_dict = {
    "统一社会信用代码": credit_code,
    "注册资本": registered_capital,
}

# 企查查用户名和密码
username = "xx"
password = "xx"

3、读取excel文件,

    path = "company_msg.xlsx"
    data = pd.read_excel(
        path, sheet_name=0
    )  # 默认读取第一个sheet的全部数据,int整数用于引用的sheet的索引(从0开始)

企查查爬虫python,爬虫,selenium,爬虫,python,chrome

 4、selenium启动chrome,设置反扒参数

  • 开启实验性功能参数:add_experimental_option()
  • 读入命令行参数: add_argument()
    # 使用chrome开发者模式
    option = webdriver.ChromeOptions()
    # 屏蔽webdriver特征
    option.add_experimental_option(
        "excludeSwitches", ["enable-automation"]
    )  
    # 禁用启用Blink运行时的功能,关闭网页页面的反扒校验
    option.add_argument("--disable-blink-features=AutomationControlled")

    option.add_argument("--no-sandbox") # 表示禁用沙盒模式
    # 沙盒模式:每一个标签页都是一个沙盒(sandbox),以“防止恶意软体自行执行安装”或“利用一个分页影响其他的分页”
    # 关闭web沙盒的命令,有可能导致浏览恶意网站时,被入侵。 
    option.add_argument("--disable-dev-shm-usage") # 启动浏览器时,添加参数--disable-dev-shm-usage。该参数使用本地local/tmp代替/dev/shm作为 Chrome 的运行空间,local/tmp比/dev/shm有更大的空间,可以使Cypress运行时,不容易因为一个文件的测试用例数多,导致内存溢出的问题。

    driver = webdriver.Chrome(options=option)
    # Selenium执行cdp命令,没有出现验证框就能登录说明已经成功屏蔽网页对selenium的识别。

    driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
        "source": """
                    Object.defineProperty(navigator, 'webdriver', {
                      get: () => undefined
                    })
                  """
    })
    
    driver.set_page_load_timeout(25) # 用于设置页面加载超时,指定时间内未加载出页面则会报错
    driver.delete_all_cookies()  # 删除所有 cookie 信息
    url = (
        "https://www.qcc.com/weblogin?back=%2F"  # https://www.qcc.com/weblogin?back=%2F
    )
    driver.get(url)
    time.sleep(1)

5、登录方式

(1)可以选择扫码,如果扫码登录就设置延时,

(2)可以选择输入账号密码,如下

前面的反扒可能失效,如果出现验证码,则需要设置延时,进行手动验证,因为验证码的形式经常变化。

    # 点击非扫码登入
    driver.find_element(
        By.XPATH, "/html/body/div[1]/div[2]/div[2]/div/div[3]/img"
    ).click()
    time.sleep(1)
    # 点击密码登录
    driver.find_element(
        By.XPATH, "/html/body/div[1]/div[2]/div[2]/div/div[1]/div[1]/div[2]/a"
    ).click()
    time.sleep(1)

    # 输入账号密码
    driver.find_element(
        By.XPATH, "/html/body/div[1]/div[2]/div[2]/div/div[1]/div[3]/form/div[1]/input"
    ).send_keys(username)
    driver.find_element(
        By.XPATH, "/html/body/div[1]/div[2]/div[2]/div/div[1]/div[3]/form/div[2]/input"
    ).send_keys(password)

    # 点击立即登录
    driver.find_element(
        By.XPATH, "/html/body/div[1]/div[2]/div[2]/div/div[1]/div[3]/form/div[4]/button"
    ).click()
    time.sleep(20)

6、获取公司对应的url进行写入excel

  • 读取文件中的公司名称,在浏览器中搜索。
  • 判断企查查中的公司名是否和文件中的一致,把对应的公司url写入excel文件
    company_urls = []

    for index, row in data.iterrows():
        name = str(row["公司名称"]).strip()
        print(f"公司名称:{name}")
        if "公司" in name:
            name = re.findall("^.*?公司", name)[0]  # 正则只提取公司名称

        if name == "nan" or not name:
            company_urls.append("")
            continue
        try:
            driver.get(
                f"https://www.qcc.com/web/search?key={name}"
            )  # https://www.qcc.com/web/search?key={}
            try:
                d = driver.find_element(
                    By.XPATH,
                    "/html/body/div/div[2]/div[2]/div[3]/div/div[2]/div/table/tr[1]/td[3]/div/div[1]/span[1]/a",
                )
                txt = driver.find_element(
                    By.XPATH,
                    "/html/body/div/div[2]/div[2]/div[3]/div/div[2]/div/table/tr[1]/td[3]/div/div[1]/span[1]/a/span",
                )
                # 模糊查询,路径改为这个 /html/body/div/div[2]/div[2]/div[4]/div/div[2]/div/table/tr[1]/td[3]/div/div[1]/span[1]/a/span
                url = d.get_attribute("href")
                print(f"{txt.text}----->>>{url}")

                if txt.text == name:
                    company_urls.append(url)
                else:
                    # 判断爬取的名字和excel文件的公司名字是否一致。
                    company_urls.append("")

            except NoSuchElementException:
                # 没有找到名字相同的公司
                company_urls.append("")
                continue
            time.sleep(2)
        except:
            company_urls.append("")
            continue

    data["url"] = company_urls
    data.to_excel(path, index=None)

7、获取对应字段的xpath路径

企查查爬虫python,爬虫,selenium,爬虫,python,chrome

举例,社会信用 复制的xpath如下,

//*[@id="cominfo"]/div[2]/table/tr[1]/td[2]/span/span[1]

 8、通过公司url获取对应字段

    for index, row in data.iterrows():
        url = str(row["url"]).strip()
        try:
            driver.get(url)  # https://www.qcc.com/web/search?key={}

            try:
                shehui_xinyong = driver.find_element(
                    By.XPATH,
                    '//*[@id="cominfo"]/div[2]/table/tr[1]/td[2]/div/span[1]'     
                ).text

            except:
                shehui_xinyong = ""
         except WebDriverException:
            shehui_xinyong = ""
        time.sleep(30)

注意:

  1. 如果不设置延时就会被检测为频繁操作,有一段时间无法登录,可根据需求设置time.sleep
  2. 代码中的xpath,可能时常有变化,如果爬取的内容为nan,可能需要到页面中重新复制对应字段的xpath

企查查爬虫python,爬虫,selenium,爬虫,python,chrome

 

完整代码和数据:企查查爬虫python版本2022年-Python文档类资源-CSDN下载文章来源地址https://www.toymoban.com/news/detail-797528.html

到了这里,关于企查查爬虫python实现(一)整体方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java爬虫 通过Chromedriver+Chrome浏览器+selenium获取页面的请求和响应(未完全实现)

    因为最近看到一个软件可以实现网页的识别,自动导入网页的内容,感觉这个功能很厉害(真心佩服设计那个软件的人)。但不清楚这个软件的网页识别的实现,也没有接触过相关的技术,就上网搜索并学习一些相关的技术,所以有了这篇文章。但是只能获取简单的请求,一

    2024年02月13日
    浏览(73)
  • 学习python中遇到的问题:selenium 程序执行完之后,Chrome闪退的解决方法‘

    可能因为版本更新,没下载好choredriver对应的,对应驱动下载win x32版,系统是win x64可正常使用,这也是当时疑惑的点 1打开关于chrome设置关于的页面,在这里就可以看到google chrome浏览器的版本号了. 2.通过自己的版本下载相应的chromedriver.exe 对比步骤: 打开下载链接: http:

    2024年01月23日
    浏览(49)
  • Python Selenium实现自动化测试及Chrome驱动使用!

    本文将介绍如何使用Python Selenium库实现自动化测试,并详细记录了Chrome驱动的使用方法。 通过本文的指导,读者将能够快速上手使用Python Selenium进行自动化测试。 并了解如何配置和使用Chrome驱动来实现更高效的自动化测试。 一、Python Selenium简介 Python Selenium是一个用于Web应用

    2024年03月10日
    浏览(68)
  • Python Selenium实现自动化测试及Chrome驱动使用

    本文将介绍如何使用 Python   Selenium 库实现 自动化测试 ,并详细 记录 了Chrome驱动的使用方法。 通过本文的指导,读者将能够快速上手使用Python Selenium进行自动化测试。 并了解如何配置和使用Chrome驱动来实现更高效的自动化测试。 一、Python Selenium简介 Python Selenium是一个用于

    2024年02月03日
    浏览(62)
  • Python3+Selenium+Chrome实现自动填写WPS表单

      本文通过python3、第三方python库Selenium和谷歌浏览器Chrome,完成WPS表单的自动填写。   python3的安装:略,网上都有教程。   Selenium的安装:在命令行输入 pip3 install selenium 并回车即可完成安装,如果不成功,查找网上教程。   Chrome的安装:略,网上都有教程。   

    2024年02月01日
    浏览(43)
  • 【Python爬虫】selenium的详细使用方法

    selenium是一个用于web应用测试的工具,selenium所做的测试会直接运行在浏览器中,就像真人进行操作一样,像是打开浏览器,输入账号密码登录等等。目前selenium支持大部分的浏览器,例如:IE,Mozilla Firefox,Safari,Google Chrome,Opera,Edge等等浏览器,selenium是一个相当成功的开

    2024年02月07日
    浏览(60)
  • 微博模拟登陆的方法 + 图灵图像图片验证码识别平台 识别验证码(97%正确率)Python + Selenium+Chrome

    最近遇到一个问题,需要频繁切换账号登陆微博,但是需要识别微博的验证码,比较麻烦。而且因为需要24h不间断的操作,所以没法使用人工打码平台,而且打码平台也比较贵,延迟又高。最后找到了一个可以机器识别出来的,延迟只有0.1s,而且准确率超级高。 首先看一下

    2024年02月04日
    浏览(76)
  • chrome.exe版本不对selenium进行爬虫时无法启动谷歌浏览器

    问题描述:由于谷歌浏览器升级,导致谷歌驱动chrome.exe版本不对,使用selenium进行爬虫时无法启动谷歌浏览器。  解决方法:1. 在谷歌浏览器的设置下,查看浏览器的Chrome版本号。  2. 进入CNPM Binaries Mirror网页,下载对应版本的谷歌驱动器。本文的浏览器是103.0.5060.53,故下载

    2024年02月12日
    浏览(67)
  • Python爬虫实现(requests、BeautifulSoup和selenium)

    Python requests 是一个常用的 HTTP 请求库,可以方便地向网站发送 HTTP 请求,并获取响应结果。 下载requests库 pip install requests 实例: 属性和方法 属性或方法 说明 content 返回响应的内容,以字节为单位 headers 返回响应头,字典格式 json() 返回结果的 JSON 对象 request 返回请求此响应

    2024年02月07日
    浏览(51)
  • python爬虫selenium行为链常用方法汇总(1),靠着这份190页的面试资料

    actions.send_keys_to_element(input_elm, ‘侯小啾’) actions.click(button_elm) actions.perform() 常用方法汇总: move_to_element() 将鼠标移动到指定element,参数为标签。 move_by_offset(xoffset, yoffset) 将鼠标移动到与当前鼠标位置的偏移处。参数为X轴Y轴上移动的距离。(距离单位为像素,可以通过截图

    2024年04月13日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包