网站刮痧特定表格

时间:2016-11-21 05:36:57

标签: python web-scraping beautifulsoup

对于一个额外的课程学校项目,我正在学习如何刮取一个网站。正如您在下面的代码中所看到的,我能够抓取一个名为“elqFormRow”的表单。离开一页。

如何抓住所有出现的'elqFormRow'总的来说website?我想将表单所在位置的URL返回到列表中,但这样做会遇到麻烦,因为我不知道怎么做。

app.config(['$locationProvider', 'adalAuthenticationServiceProvider', '$httpProvider', function($locationProvider, adalAuthenticationServiceProvider, $httpProvider) {
            $locationProvider.html5Mode(true).hashPrefix('!');
            $locationProvider.html5Mode(true).hashPrefix('!');
            var endpoints = {
                "http://garycors.azurewebsites.net": "bce85948-9ea4-4738-b1e6-972f3d30f4da",
                // "http://garycors.azurewebsites.net": "90e54701-ff93-414c-b7ee-c2d9b01417f3",
            };
            adalAuthenticationServiceProvider.init({
                    tenant: "<tenant_id>", // Optional by default, it sends common
                    clientId: "<client_id>", 
                    cacheLocation: 'sessionStorage'
                },
                $httpProvider // pass http provider to inject request interceptor to attach tokens
            );
            $httpProvider.interceptors.push('httpRequestInterceptor');
    }]);

 app.factory('httpRequestInterceptor', function () {
          return {
            request: function (config) {

              config.headers['Authorization'] = 'Bearer ' + sessionStorage.getItem("adal.idtoken");

              return config;
            }
          };
        });

1 个答案:

答案 0 :(得分:0)

您可以从页面抓取网址并按照它们(可能)抓取整个网站。这样的东西,需要一点点按摩,这取决于你想要开始的地方和你想要的页面:

import bs4 as bs
import requests

domain = "engage.hpe.com"
initial_url = 'http://engage.hpe.com/Template_NGN_Convert_EG-SW_Combined_TEALIUM-RegPage'

# get urls to scrape
text = requests.get(initial_url).text
initial_soup = bs.BeautifulSoup(text, 'lxml')
tags = initial_soup.findAll('a', href=True)

urls = []
for tag in tags:
    if domain in tag:
        urls.append(tag['href'])
urls.append(initial_url)

print(urls)

# function to grab your info
def scrape_desired_info(url):
    out = []
    text = requests.get(url).text
    soup = bs.BeautifulSoup(text, 'lxml')
    for div in soup.find_all('div', class_='elqFormRow'):
        out.append(div.text.strip())
        return out



info = [scrape_desired_info(url) for url in urls if domain in url]

URLlib发臭,使用请求。如果您需要在站点中向下移动多个级别,请将URL查找部分放在一个函数中并将其调用X次,其中X是您想要遍历的链接级别数。

负责任地刮。尽量不要进入魔法师的学徒状态,在这种情况下你会在一个循环中反复访问该网站,或者跟随该网站外部的链接。一般来说,我也没有提出你要抓的页面的问题。