python爬蟲--day04

selenium&phantomJS&headless

瀏覽器驅(qū)動(dòng)下載

IE11的Webdriver下載:
    http://dl.pconline.com.cn/download/771640-1.html
    鏈接:https://pan.baidu.com/s/13TTyXGNaG5cpSNdl1k9ksQ 密碼:2n9n

Chrome65.0.3325.146的webdriver驅(qū)動(dòng)下載:
    多版本:http://chromedriver.storage.googleapis.com/index.html
    或 http://npm.taobao.org/mirrors/chromedriver/2.43/

Firefox58的webdriver驅(qū)動(dòng)下載
    鏈接:https://pan.baidu.com/s/1RATs8y-9Vige0IxcKdn83w 密碼:l41g

selenium使用

get(url):打開URL
def openURL():
    driver = webdriver.Chrome()
    driver.get("http://www.baidu.com")
    print(driver.page_source)
clear() : 清除數(shù)據(jù) Clears the text if it’s a text entry element.
page_source:獲取HTML源碼
close():關(guān)閉
quit():全部關(guān)閉
click():點(diǎn)擊,Clicks the element.
execute_script(script, *args): 執(zhí)行腳本
driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")

# 下拉滾動(dòng)條,使瀏覽器加載出動(dòng)態(tài)加載的內(nèi)容
while True:
    # 可能像這樣要拉很多次,中間要適當(dāng)?shù)难訒r(shí)。
    # 如果說(shuō)說(shuō)內(nèi)容都很長(zhǎng),就增大下拉的長(zhǎng)度。
    for i in range(10):
        driver.execute_script("window.scrollBy(0,1000)")
        time.sleep(3)
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
    break

查找元素

find_element(by='id', value=None)
find_element_by_class_name(name)

? Finds element within this element’s children by class name.

find_element_by_css_selector(css_selector)

? Finds element within this element’s children by CSS selector.

find_element_by_id(id_)

? Finds element within this element’s children by ID.

find_element_by_link_text(link_text)

? Finds element within this element’s children by visible link text.

find_element_by_name(name)

? Finds element within this element’s children by name.

find_element_by_tag_name(name)

? Finds element within this element’s children by tag name.

find_element_by_xpath(xpath)

? Finds element by xpath.

myelement.find_element_by_xpath(".//a")

? However, this will select the first link on the page.

myelement.find_element_by_xpath("http://a")
find_elements(by='id', value=None)

? ‘Private’ method used by the find_elements_by_* methods.

find_elements_by_class_name(name)

? Finds a list of elements within this element’s children by class name.

find_elements_by_css_selector(css_selector)

? Finds a list of elements within this element’s children by CSS selector.

find_elements_by_id(id_)

? Finds a list of elements within this element’s children by ID. Will return a list of webelements if found, or an empty list if not.

find_elements_by_link_text(link_text)

? Finds a list of elements within this element’s children by visible link text.

find_elements_by_name(name)

? Finds a list of elements within this element’s children by name.

find_elements_by_tag_name(name)

? Finds a list of elements within this element’s children by tag name.

find_elements_by_xpath(xpath)

? Finds elements within the element by xpath.

get_attribute(name)

? Gets the given attribute or property of the element.

示例:

# Check if the "active" CSS class is applied to an element.
is_active = "active" in target_element.get_attribute("class")
save_screenshot(filename)

? Saves a screenshot of the current element to a PNG image file. Returns

send_keys(*value)

? Simulates typing into the element.

form_textfield = driver.find_element_by_name('username')
form_textfield.send_keys("admin")

search.send_keys("海賊王", Keys.ARROW_DOWN) # 回車

? This can also be used to set file inputs.

file_input = driver.find_element_by_name('profilePic')
file_input.send_keys("path/to/profilepic.gif")
示例:selenium登錄知乎
import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.zhihu.com/')

# 點(diǎn)擊登錄按鈕
driver.find_element_by_xpath('//*[@id="root"]/div/main/div/div/div/div[2]/div[2]/span').click()
time.sleep(2)

# 輸入用戶名
username = driver.find_element_by_name("username")
username.send_keys('18588403840')
time.sleep(2)

# 輸入密碼
password = driver.find_element_by_name("password")
password.send_keys('Changeme_123')
time.sleep(8)

# 登錄
driver.find_element_by_xpath('//*[@id="root"]/div/main/div/div/div/div[2]/div[1]/form/button').click()

# 登錄后獲取登錄后的信息
driver.get('https://www.zhihu.com/people/zuo-zai-fen-tou-diao-xi-gui-82/activities')
print(driver.page_source)

# 可以登錄后的獲取cookie
# print(driver.get_cookies())


# 新版知乎設(shè)置了反爬了, 如果上面的方式無(wú)法登錄:可以使用第三方登錄
# 進(jìn)入登陸頁(yè)面
driver.find_element_by_xpath(".//*[@class='SignContainer-switch']/span").click()

# 點(diǎn)擊社交網(wǎng)絡(luò)賬號(hào)登陸
driver.find_element_by_xpath(".//*[@class='Login-socialLogin']/button").click()
# 點(diǎn)擊QQ登陸
driver.find_element_by_xpath(".//*[@class='Login-socialButtonGroup']/button[3]").click()

time.sleep(15)  # 時(shí)間不夠的自己加
driver.refresh()  # 15秒后要刷新

# 登錄后
# 獲取cookie
print(driver.get_cookies())

selenium設(shè)置代理
from selenium import webdriver
chromeOptions = webdriver.ChromeOptions()

# 設(shè)置代理
# 一定要注意,=兩邊不能有空格,不能是這樣--proxy-server = http://202.20.16.82:10152
chromeOptions.add_argument("--proxy-server=http://10.3.132.6:808")
browser = webdriver.Chrome(chrome_options=chromeOptions)

# 查看本機(jī)ip,查看代理是否起作用
browser.get("https://blog.csdn.net/zwq912318834/article/details/78626739")
print(browser.page_source)

# 退出,清除瀏覽器緩存
# browser.quit()

練習(xí):selenium登錄QQ空間
提示:
    login = driver.find_element_by_id('login_frame')
    # iframe需要轉(zhuǎn)換
    driver.switch_to_frame(login)

PhantomJS 無(wú)界面瀏覽器

? 已停止研發(fā)

headless

? Headless Chrome是Chrome 瀏覽器的無(wú)界面形態(tài),可以在不打開瀏覽器的前提下,使用所有 Chrome 支持的特性運(yùn)行程序。相比于現(xiàn)代瀏覽器,Headless Chrome 更加方便測(cè)試web應(yīng)用,獲得網(wǎng)站的截圖,做爬蟲抓取信息等,也更加貼近瀏覽器環(huán)境。

Headless Chrome基于PhantomJS(QtWebKit內(nèi)核)由谷歌Chrome團(tuán)隊(duì)開發(fā)。團(tuán)隊(duì)表示將專注研發(fā)這個(gè)項(xiàng)目

確保你的 chrome 瀏覽器版本是 60+.

配置
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument("--headless")  # 使用headless 無(wú)界面形態(tài)
chrome_options.add_argument('--disable-gpu')  # 禁用gpu

driver = webdriver.Chrome(chrome_options=chrome_options)

XPath

XPath即為XML路徑語(yǔ)言,它是一種用來(lái)確定XML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言的子集)文檔中某部分位置的語(yǔ)言。XPath基于XML的樹狀結(jié)構(gòu),有不同類型的節(jié)點(diǎn),包括元素節(jié)點(diǎn),屬性節(jié)點(diǎn)和文本節(jié)點(diǎn),提供在數(shù)據(jù)結(jié)構(gòu)樹中找尋節(jié)點(diǎn)的能力。

什么是 XPath?

  • XPath 使用路徑表達(dá)式在 XML 文檔中進(jìn)行導(dǎo)航

  • XPath 包含一個(gè)標(biāo)準(zhǔn)函數(shù)庫(kù)

  • XPath 是 XSLT 中的主要元素

  • XPath 是一個(gè) W3C 標(biāo)準(zhǔn)

使用xpath

pip install lxml

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="python" contenteditable="true" cid="n16" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">import lxml
from lxml import etree</pre>

XPath Helper插件

chrome插件網(wǎng):http://www.cnplugins.com/

添加插件

Ctrl + Shift + X打開或關(guān)閉插件

XPath 術(shù)語(yǔ)

節(jié)點(diǎn)(Node)

在 XPath 中,有七種類型的節(jié)點(diǎn):元素、屬性、文本、命名空間、處理指令、注釋以及文檔(根)節(jié)點(diǎn)。XML 文檔是被作為節(jié)點(diǎn)樹來(lái)對(duì)待的。樹的根被稱為文檔節(jié)點(diǎn)或者根節(jié)點(diǎn)。

請(qǐng)看下面這個(gè) XML 文檔:

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="xml" contenteditable="true" cid="n25" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"><?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore></pre>

基本值(或稱原子值,Atomic value) 基本值是無(wú)父或無(wú)子的節(jié)點(diǎn)。
項(xiàng)目(Item)

項(xiàng)目是基本值或者節(jié)點(diǎn)。

節(jié)點(diǎn)關(guān)系

父(Parent)

每個(gè)元素以及屬性都有一個(gè)父。 #####子(Children) 元素節(jié)點(diǎn)可有零個(gè)、一個(gè)或多個(gè)子。

同胞(Sibling)

擁有相同的父的節(jié)點(diǎn) #####先輩(Ancestor) 某節(jié)點(diǎn)的父、父的父,等等。

后代(Descendant)

某個(gè)節(jié)點(diǎn)的子,子的子,等等。

XPath 語(yǔ)法

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="xml" contenteditable="true" cid="n38" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"><?xml version="1.0" encoding="UTF-8"?>
?
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
?
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore></pre>

選取節(jié)點(diǎn)

XPath 使用路徑表達(dá)式在 XML 文檔中選取節(jié)點(diǎn)。節(jié)點(diǎn)是通過(guò)沿著路徑或者 step 來(lái)選取的。 下面列出了最有用的路徑表達(dá)式:

表達(dá)式 描述
/ 獲取子節(jié)點(diǎn),默認(rèn)選取根節(jié)點(diǎn)。
// 從匹配選擇的當(dāng)前節(jié)點(diǎn)選擇文檔中的節(jié)點(diǎn),而不考慮它們的位置。
. 選取當(dāng)前節(jié)點(diǎn)。
.. 選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)。
@ 選取屬性。

在下面的表格中,我們已列出了一些路徑表達(dá)式以及表達(dá)式的結(jié)果:

路徑表達(dá)式 結(jié)果
/bookstore 選取根元素 bookstore。注釋:假如路徑起始于正斜杠( / ),則此路徑始終代表到某元素的絕對(duì)路徑!
/bookstore/book 選取屬于 bookstore 的子元素的所有 book 元素。
//book 選取所有 book 子元素,而不管它們?cè)谖臋n中的位置。
/bookstore//book 選擇屬于 bookstore 元素的后代的所有 book 元素,而不管它們位于 bookstore 之下的什么位置。
//@lang 選取名為 lang 的所有屬性。

謂語(yǔ)(Predicates)

謂語(yǔ)用來(lái)查找某個(gè)特定的節(jié)點(diǎn)或者包含某個(gè)指定的值的節(jié)點(diǎn)。

謂語(yǔ)被嵌在方括號(hào)中。

在下面的表格中,我們列出了帶有謂語(yǔ)的一些路徑表達(dá)式,以及表達(dá)式的結(jié)果:

路徑表達(dá)式 結(jié)果
/bookstore/book[1] 選取屬于 bookstore 子元素的第一個(gè) book 元素。
/bookstore/book[last()] 選取屬于 bookstore 子元素的最后一個(gè) book 元素。
/bookstore/book[last()-1] 選取屬于 bookstore 子元素的倒數(shù)第二個(gè) book 元素。
/bookstore/book[position()<3] 選取最前面的兩個(gè)屬于 bookstore 元素的子元素的 book 元素。
//title[@lang] 選取所有擁有名為 lang 的屬性的 title 元素。
//title[@lang='eng'] 選取所有 title 元素,且這些元素?fù)碛兄禐?eng 的 lang 屬性。
/bookstore/book[price>35.00] 選取 bookstore 元素的所有 book 元素,且其中的 price 元素的值須大于 35.00。
/bookstore/book[price>35.00]/title 選取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值須大于 35.00。

選取未知節(jié)點(diǎn)

XPath 通配符可用來(lái)選取未知的 XML 元素。

通配符 描述
* 匹配任何元素節(jié)點(diǎn)。
@* 匹配任何屬性節(jié)點(diǎn)。
node() 匹配任何類型的節(jié)點(diǎn)。

在下面的表格中,我們列出了一些路徑表達(dá)式,以及這些表達(dá)式的結(jié)果:

路徑表達(dá)式 結(jié)果
/bookstore/* 選取 bookstore 元素的所有子元素。
//* 選取文檔中的所有元素。
//title[@*] 選取所有帶有屬性的 title 元素。

選取若干路徑

通過(guò)在路徑表達(dá)式中使用"|"運(yùn)算符,您可以選取若干個(gè)路徑。

在下面的表格中,我們列出了一些路徑表達(dá)式,以及這些表達(dá)式的結(jié)果:

路徑表達(dá)式 結(jié)果
//book/title //book/price 選取 book 元素的所有 title 和 price 元素。
//title //price 選取文檔中的所有 title 和 price 元素。
/bookstore/book/title //price 選取屬于 bookstore 元素的 book 元素的所有 title 元素,以及文檔中所有的 price 元素。

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="python" contenteditable="true" cid="n158" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">htmlFile = '''
<ul>
<li class="item-0"><a href="link1.html">first item</a></li>
<li class="item-1"><a href="link2.html">second item</a></li>
<li class="item-inactive"><a href="link3.html">third item</a></li>
<li class="item-1"><a href="link4.html">fourth item</a></li>
<li class="item-0"><a href="link5.html">fifth item</a></li>
</ul>
'''

html = lxml.etree.parse("filename.html") # 讀取文件
html = lxml.etree.HTML(htmltext) # 直接加載

print(html.xpath("http://li/@class")) # 取出li的所有節(jié)點(diǎn)class名稱
print(html.xpath("http://li/@text")) # 為空,如果包含這個(gè)屬性,
print(html.xpath("http://li/a")) # li下面5個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)對(duì)應(yīng)一個(gè)元素
print(html.xpath("http://li/a/@href")) # 取出li的所有節(jié)點(diǎn) a內(nèi)部href名稱
print(html.xpath("http://li/a/@href="link3.html"")) # 判斷是有一個(gè)節(jié)點(diǎn)==link3.html
print(html.xpath("http://li//span")) # 取出li下面所有的span
print(html.xpath("http://li//span/@class")) # 取出li下面所有的span內(nèi)部的calss
print(html.xpath("http://li/a//@class")) # 取出li的所有節(jié)點(diǎn)內(nèi)部節(jié)點(diǎn)a包含的class
print(html.xpath("http://li")) # 取出所有節(jié)點(diǎn)
print(html.xpath("http://li[1]")) # 取出第一個(gè)
print(html.xpath("http://li[last()]")) # 取出最后一個(gè)
print(html.xpath("http://li[last()-1]")) # 取出倒數(shù)第2個(gè)
print(html.xpath("http://li[last()-1]/a/@href")) # 取出倒數(shù)第2個(gè)的a下面的href
print(html.xpath("http://[@text="3"]")) # 選著text=3的元素
print(html.xpath("http://
[@text="3"]/@class")) # 選著text=3的元素
print(html.xpath("http://*[@class="nimei"]")) # 選著text=3的元素
print(html.xpath("http://li/a/text()")) # 取出<>
print(html.xpath("http://li[3]/a/span/text()")) # 取出內(nèi)部<>數(shù)據(jù)</pre>

示例1:抓取前程無(wú)憂招聘網(wǎng)崗位數(shù)量
示例2:抓取51job(前程無(wú)憂)全國(guó)崗位 https://jobs.51job.com/
練習(xí):抓取上海市高級(jí)人民法院網(wǎng) http://www.hshfy.sh.cn/shfy/gweb2017/ktgg_search.jsp

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="python" contenteditable="true" cid="n162" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">import requests
url = "http://www.hshfy.sh.cn/shfy/gweb2017/ktgg_search_content.jsp"
?
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"
}
page = requests.get(url=url, headers=header)
print(page.content.decode())
?</pre>

練習(xí): 爬取鏈家 https://gz.lianjia.com/ershoufang/

常用UA池

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm" lang="python" contenteditable="true" cid="n165" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"> ua_list = [ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60",
"Opera/8.0 (Windows NT 5.1; U; en)",
"Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.50",
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0",
"Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2 ",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11",
"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36",
"Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER",
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; LBBROWSER)",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E; LBBROWSER)",
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; QQBrowser/7.0.3698.400)",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)",
"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0)",
]</pre>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容