日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

div中内容靠右_python读取excel的公司名称信息,并爬虫获取公司的经营范围信息,回填到excel中...

發布時間:2025/1/21 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 div中内容靠右_python读取excel的公司名称信息,并爬虫获取公司的经营范围信息,回填到excel中... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家總說,python今天學明天忘,沒有實際操作,想要知道哪里有練手的機會。其實你要善于發現問題,捕捉問題。不管是你看到文章中的一些案例,還是微信群友問的一個問題。你都需要仔細思考,如果是你做你應該怎么做?本文就是一個很好的說明!

1、項目需求

項目需求:這個問題是朋友托我幫完成一份地區教育類型公司的經營范圍。已有信息:表中已經有了公司的名稱及地點等信息。缺省信息:但是還缺少經營范圍。出現的問題:由于數據量比較大,一個一個的去百度搜再復制到表里,工作量有點大,可能需要我好幾天不吃不喝的Ctrl c、Ctrl v,這樣顯然不是個好辦法。解決辦法:我們可以利用python從excel中把公司名稱都讀出來,然后讓它自動去網頁中,搜索獲取該公司的經營范圍,并批量回填到excel中。

2、完成步驟

拿到這個問題,我首先想到的是利用selenium自動化測試工具。可以利用該工具,模擬人為操作瀏覽器,來獲取公司的經營范圍,并將獲取到的數據抓取下來,批量填回到excel中。

1)安裝selenium模塊和下載chromedriver驅動
① 安裝selenium庫
② 下載chromedriver驅動

下載地址:http://chromedriver.storage.googleapis.com/index.html注意事項一:
下載的chromedriver驅動必須和谷歌瀏覽器相匹配。注意事項二:
下載好的chromedriver.exe文件,需要放到python的安裝路徑下或者scripts目錄下(如圖所示)。接著,進行一個小的測試。導入webdriver后,我們先利用代碼看看是否可以打開瀏覽器。如果可以正常打開,說明selenium安裝配置沒有問題。

from?selenium?import?webdriver
browser?=?webdriver.Chrome()

首先,在編輯器中輸入以下代碼。可以看到”谷歌瀏覽器“被自動打開了。上面只是做了一個小的測試。下面我們以訪問百度為例,做一個簡單的測試。

from?selenium?import?webdriver

#?打開谷歌瀏覽器
browser?=?webdriver.Chrome()

try:
????#?獲取訪問地址www.baidu.com
????browser.get("https://www.baidu.com")

????#?通過id獲取到百度搜索輸入框并賦予搜索條件
????browser.find_element_by_id('kw').send_keys('python')

????#?通過id獲取到搜索按鈕并賦予點擊操作
????browser.find_element_by_id('su').click()

except?Excception?as?e:
????print("搜索失敗:{}".format(e))

從下圖可以看到:瀏覽器被成功打開,同時也打開了百度的頁面。同時在輸入框中自動輸入了python二字,并成功點擊進行了搜索。

至于怎么定位到百度瀏覽器輸入框和搜索按鈕的id,我們可以通過F12查看頁面元素來獲取其實,進行界面定位的方式有很多,我們選取自己最喜歡、最熟悉的方式即可。下面我列舉了一些定位方法,大家可以自行下去嘗試。

find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector
2)進入主題(分析思路)

好了!基礎的搜索步驟已經差不多了,我們來進入正題,公司經營范圍一般我們可以去百度信譽去查詢。
百度信譽的網址:https://xin.baidu.com/

我們仔細查看下圖:這個查詢是直接把查詢條件拼接在地址后面的一個get請求。
這樣就說明,我們根本就不需要通過模擬瀏覽器去查詢數據了,直接請求這個地址就可以獲取到數據了,瞬間工作量少了很多哈哈哈哈,那我們就開始吧。既然直接可以請求地址獲取數據,那我們就解析獲取到的數據,拿到我們想要的東西就好了,這里我習慣用xpath來解析,感興趣的也可以用正則等其他方法解析。
我需要企業的經營范圍信息,點擊F12選中經營范圍元素,我們要的數據就是這個,右擊這個標簽選擇Copy選項 --> Copy XPath復制這個標簽的xpath信息。我們通過xpath去解析頁面內容需要先安裝一下lxml模塊和requests模塊。上述粘貼到的xpath信息,后面接上text()便可以獲取到標簽的文本信息了。

from?lxml?import?etree
import?requests

root?=?etree.HTML(requests.get("https://xin.baidu.com/s?q="+"百度").text)
scope?=?root.xpath("/html/body/div[2]/div/div[2]/div[5]/div[1]/div[1]/div[2]/div/div[1]/span[5]/span[2]/text()")
print(scope)

獲取到的內容如下:但是我們仔細一看,這里獲取到的經營范圍是帶了省略號的,所以是不完整的。
我們再看看頁面,發現頁面上外面的標簽中才是完整的信息,但是此時我們用text()是獲取不到的,這個時候得用@來選擇屬性,獲取data-content中的信息。修改后的代碼:

from?lxml?import?etree
import?requests

root?=?etree.HTML(requests.get("https://xin.baidu.com/s?q="+"百度").text)
scope?=?root.xpath("/html/body/div[2]/div/div[2]/div[5]/div[1]/div[1]/div[2]/div/div[1]/span[5]/@data-content")
print(scope)

單條數據的獲取我們已經可以實現了,接下來我們就可以進行批量操作了,把查詢參數換成可變的、從excel中讀取的。
我們先來實現從excel中讀取到數據吧,開干。\讀取excel我這里用的是xlrd模塊,先事先安裝一下這個庫。我們把excel表中的數據讀出來打印出來看一下,表格信息大致如下。

import?xlrd

#讀取本地的excel文件
wb?=?xlrd.open_workbook("教育類.xls",formatting_info=True)

#獲取sheet1
sheet?=?wb.sheet_by_index(0)

#遍歷每行數據
for?i?in?range(sheet.nrows):
????if(i!=0):
????????#獲取到excel表中的第三列的數據
????????query?=?sheet.cell_value(i,2)
????????print(query)

查詢的參數我們也讀出來了,下面可以先把這塊的代碼合二為一,批量獲取經營范圍數據,這里為了方便我就先不寫成獨立的方法了,直接放在一起了。

import?xlrd
from?lxml?import?etree
import?requests
import?time

#讀取本地的excel文件
wb?=?xlrd.open_workbook("教育類.xls",formatting_info=True)

#獲取sheet1
sheet?=?wb.sheet_by_index(0)

#遍歷每行數據
for?i?in?range(sheet.nrows):
????if(i!=0):
????????#獲取到excel表中的第三列的數據
????????query?=?sheet.cell_value(i,2)
????????print(query)
????????root?=?etree.HTML(requests.get("https://xin.baidu.com/s?q="+query).text)
????????scope=?root.xpath("/html/body/div[2]/div/div[2]/div[5]/div[1]/div[1]/div[2]/div/div[1]/span[5]/@data-content")
????????data.append(scope[0])
????????time.sleep(1)

print(data)??

data輸出是一個數組,存儲著excel表中所有公司的經營范圍信息。數據有了,接下來我們就把數據寫入excel中,把數據完善。向excel中寫入內容,使用的是xlwt,因此又得安裝一下xlwt模塊。我們寫入的方法,是利用復制一份寫入數據,再覆蓋的方法,所以還得安裝xlutils模塊使用它的copy方法。完整的代碼如下:

import?xlrd
import?xlwt
from?lxml?import?etree
import?requests
import?time
from?xlutils.copy?import?copy
wb?=?xlrd.open_workbook("教育類.xls",formatting_info=True)


sheets?=?wb.sheet_names()
sheet?=?wb.sheet_by_index(0)
data?=?[]
for?i?in?range(sheet.nrows):
????if(i!=0):
????????query?=?sheet.cell_value(i,2)
????????root?=?etree.HTML(requests.get("https://xin.baidu.com/s?q="+query).text)
????????scope?=?root.xpath("/html/body/div[2]/div/div[2]/div[5]/div[1]/div[1]/div[2]/div/div[1]/span[5]/@data-content")
????????data.append(scope[0])
????????time.sleep(1)

wb?=?xlrd.open_workbook("教育類.xls",formatting_info=True)
old?=?copy(wb)
ws?=?old.get_sheet(0)
for?j?in?range(len(data)):
????print(data[j])
????print('\n')
????ws.write(j+1,7,data[j])

old.save("教育類.xls")

運行結束之后可以發現:excel中的經營范圍已經有數據了,整個過程就結束了,收工。代碼比較簡單隨意,主要是一個思路,本人也是個初學者,python只是個閑時愛好,不專業,有不對的地方歡迎大佬們指正,共同進步。

總結

以上是生活随笔為你收集整理的div中内容靠右_python读取excel的公司名称信息,并爬虫获取公司的经营范围信息,回填到excel中...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。