ちょうどWebでぼかしを開始したPythonで、私はいくつかの問題に直面しています。BeautifulSoupとlxmlがdiv要素を見つけることができません
私は、Webページのソースをダウンロードするにはセレンを使用して開始し、それを保存:
from selenium import webdriver
driver= webdriver.Firefox()
driver.get("https://www.website.com")
f=open('output.txt','w')
f.write(driver.page_source.encode('utf-8'))
f.close()
driver.quit()
すべてがうまく働いたが、セレンは時間がかかりすぎるので、私は最初のページのソースを取得するために、機械化に転じ:
ここでimport mechanize
browser = mechanize.Browser()
browser.set_handle_robots(False)
cookies = mechanize.CookieJar()
browser.set_cookiejar(cookies)
browser.addheaders = [('User-agent', 'Mozilla/5.0')]
browser.set_handle_refresh(False)
browser.open("https://www.website.com")
に問題が来る:私はそれのidで特定のdivを探してみた場合、それは私に何を返します:
from bs4 import BeautifulSoup as BS
soup= BS(browser.response().read(),'lxml')
print(soup.find(id="div_id"))
機械的に得られたソースコードを通常のテキストエディタで調べると、それを見つけることができます。それはのようなものです:
<div id="div_id" data referrer="div_id">
このdiv要素は、他の多くの子要素を持っている、それはコード、および完全なソースコード「に」1/5程度に位置しています、私が代わりに近く、他のDIVを探してみてください500kb.Ifについてです、運もない。ソースコードの冒頭付近にあるdivを探すと、それが見つかります。興味深いのは、取得したソースコードではなく、Seleniumで取得したソースコードで同じdivを(BSで)探してみると面白いですMechanizeでは、それを見つけることができますが、divはテキストエディタで検査しても全く同じように見えます。
私はBSサポートパーサーのすべてを試しましたが、運はありませんでした。だから私はそれが多分BSとは何かを考えていた、と私はlxmlのと同じことを実行しようとしました:
from lxml import etree
parser= etree.HTMLParser()
tree= etree.parse(open('source.txt'),parser)
results= tree.xpath('//div[@id="div_id"]')
print(etree.tostring(results[0]))
BSと同じように、セレンで得られたソースコード内のdiv要素を見つけることができたが、ありません機械化で。だから私はそれは、Mechanizeのとは何かを持っていると考えていたとの要求に使用する有効:BSまたはlxmlのいずれかで、divのためpage.contentに見えた
import requests
from fake_useragent import UserAgent
ua=UserAgent()
url= 'https://www.website.com'
headers= {'User-agent': str(ua.chrome)}
page = requests.get(url, headers=headers)
を、再び何luck.Itは私が分析するかどうか起こりません直接応答をするか、ファイルに保存してファイルを分析するかどうかを指定します。
私はそれについて考えています...私はまた、私はセレンとそれをやったことがわかりましたが、機械化と要求の応答をエンコードしようとしましたが、変更はありません。私はまた、他のBSバージョン(3.x)を使用してみました。変更はありません。
要約: - BSまたはlxmlのdivをSeleniumで取得したソースコードに検索すると、それが見つかります。他の項目はありません。 - 私がソースコードの始めに他のdivを探すと、BSとlxmlはコードを取得するために使用された方法とは関係なくそれを見つけます。 - 検査の際、divはすべての場合に存在します。使用
バージョン: -python:2.7.9 -BeautifulSoup:4.6.0 -Mechanize:0.3.5 -requests:2.18.4 -Selenium:3.5.0 -lxml:4.0.0 -OS:linux debian
ありがとう。
実際のURLを教えてください。 –
url:https://www.facebook.com/groups/1584160618524185/ div id:pagelet_forsale_island ありがとう – Bleracas