javascript - Python Selenium,抓取网页 javascript 表

标签 javascript python selenium beautifulsoup

我将废弃下面链接中的 javascript 表。 http://data2.7m.cn/history_Matches_Data/2009-2010/92/en/index.shtml

import codecs
import lxml.html as lh
from lxml import etree
import requests
from selenium import webdriver
import urllib2
from bs4 import BeautifulSoup

URL = 'http://data2.7m.cn/history_Matches_Data/2009-2010/92/en/index.shtml'
profile = webdriver.FirefoxProfile()
profile.set_preference('network.http.max-connections', 30)
profile.update_preferences()
browser = webdriver.Firefox(profile)
browser.get(URL)
content = browser.page_source
soup = BeautifulSoup(''.join(content))

当我获取网页内容时,我需要知道该特定联赛的足球比赛轮数。

下面的代码只找到了唯一的一张 table ,请问如何获得所有38场足球比赛的 table ?谢谢。

# scrap the round of soccer matches
soup.findAll('td', attrs={'class': 'lsm2'})

# print the soccer matches' result of default round, but there have 38 rounds (id from s1 to s38)
print soup.find("div", {"id": "Match_Table"}).prettify()

最佳答案

# ============================================================
import codecs
import lxml.html as lh
from lxml import etree
import requests
from selenium import webdriver
import urllib2
from bs4 import BeautifulSoup
from pandas import DataFrame, Series
import html5lib

URL = 'http://data2.7m.cn/history_Matches_Data/2009-2010/92/en/index.shtml'
profile = webdriver.FirefoxProfile()
profile.set_preference('network.http.max-connections', 30)
profile.update_preferences()
browser = webdriver.Firefox(profile)
browser.get(URL)

content = browser.page_source
soup = BeautifulSoup(''.join(content))
# num = soup.findAll('td', attrs={'class': 'lsm2'})
# num = soup.findAll('table')[2].findAll('td')[37].text
# soup.findAll('table',attrs={'class':'e_run_tb'})

    num1 = soup.findAll('table')[2].findAll('tr')
    for i in range(1,len(num1)+1):
        for j in range(1,len(num1[i-1])+1):
            # click button on website
            clickme = browser.find_element_by_xpath('//*[@id="e_run_tb"]/tbody/tr'+'['+str(i)+']'+'/td'+'['+str(j)+']')
            clickme.click()

            content = browser.page_source
            soup = BeautifulSoup(''.join(content))

            table = soup.find('div', attrs={'class': 'e_matches'})
            rows = table.findAll('tr')
#           for tr in rows:
#             cols = tr.findAll('td')
#             for td in cols:
#                    text = td.find(text=True)
#                    print text,
#                print
            for tr in rows[5:16]: #from row 5 to 16
                cols = tr.findAll('td')
                for td in cols:
                    text = td.find(text=True)
                    print text,
                print
            print

关于javascript - Python Selenium,抓取网页 javascript 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19738920/

相关文章:

python - 使用 'expect' 方法捕获 Python 异常?

python - 链接器错误 Lunatic Python lua.require ('socket' ) -> undefined symbol : lua_getmetatable

python - SymPy:使用 2-D 输入进行lambdaify

selenium - 如何使用 poltergeist 拖放?

javascript - 更改 WP 插件中的 JS 函数

javascript - 展平 javascript 对象数组

javascript - 尝试代理 ES6 类构造函数时出现 TypeError

java - 如何在 selenium webdriver 中将值从一个测试用例传递到另一个测试用例

java - 为什么我在 Selenium 中收到 "The type is deprecated"错误?

javascript - 为什么我从 here-string 中收到 "not a cmdlet"错误?