Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 美化组:在元素中查找元素_Python_Web_Web Scraping_Beautifulsoup - Fatal编程技术网

Python 美化组:在元素中查找元素

Python 美化组:在元素中查找元素,python,web,web-scraping,beautifulsoup,Python,Web,Web Scraping,Beautifulsoup,我正试图从下面的网站上找到一个游戏列表,属于“a”类。我可以找到值为“letter-a”的id属性的div,但无论我尝试什么模式,都不能直接在其中找到li元素 import bs4 import logging import requests logging.basicConfig(level=logging.DEBUG, format="%(asctime)s - \ %(levelname)s - %(message)s") ##res = requests.get("http://ww

我正试图从下面的网站上找到一个游戏列表,属于“a”类。我可以找到值为“letter-a”的
id
属性的
div
,但无论我尝试什么模式,都不能直接在其中找到
li
元素

import bs4
import logging
import requests

logging.basicConfig(level=logging.DEBUG, format="%(asctime)s - \
%(levelname)s - %(message)s")

##res = requests.get("http://www.xbox.com/en-GB/xbox-one/backward-\
##compatibility")
res = requests.get("http://www.xbox.com/en-US/xbox-one/backward-\
compatibility/available-games")
res.raise_for_status()

soup = bs4.BeautifulSoup(res.text, "html.parser")
#game_elems = soup.select("body[id=\"DocumentBody\"] div[id=\"bodycolumn\"]")
game_elems = soup.select("#letter-a li")

logging.info("Length added elements: {}".format(len(game_elems)))
if game_elems:
    logging.info("First element in 'game_elems': {}".format(str(game_elems[0])))

您可以通过使用Selenium控制浏览器来获取由JS修改的DOM。要使用硒,您可以像这样:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://www.xbox.com/en-US/xbox-one/backward-compatibility/available-games")

elem = driver.find_element_by_css_selector("#letter-a")
print elem.get_attribute('innerHTML')
driver.close()
您还可以使用Selenium控制其他浏览器,包括无头浏览器(在后台运行而不打开窗口的浏览器),如PhantomJS



之前我注意到HTML格式不正确–您不应该在
ul
中直接使用
div
。但这最终不是阻塞问题。

您尝试过哪些模式?您试图针对的html是什么样子的?Lots:)添加了一个html的img。您忘记了详细描述什么不起作用,您得到了什么输出以及您想要什么输出。谢谢。我将研究如何使用其他解析器。我在回答中添加了一些示例。非常感谢Ivan!非常感谢。我在安装lxml时遇到问题,我正在解决这个问题,但是html5lib解析器也找不到我的li元素。此外,在您给出的示例中,html.parser会找到包含“aaa”的li元素:/