网站刮削特定表单

2024-05-15 10:47:11 发布

您现在位置:Python中文网/ 问答频道 /正文

为了一个课外项目,我正在学习如何浏览网站。从下面的代码可以看出,我可以从一个页面上刮下一个名为“elqFormRow”的表单。你知道吗

一个人怎样才能从整体上清除所有出现的elqFormRow呢?我想把这个表单所在的URL返回到一个列表中,但是在这样做的时候遇到了麻烦,因为我不知道如何lol

import bs4 as bs
import urllib.request

sauce = urllib.request.urlopen('http://engage.hpe.com/Template_NGN_Convert_EG-SW_Combined_TEALIUM-RegPage').read()

soup = bs.BeautifulSoup(sauce, 'lxml')

for div in soup.find_all('div', class_='elqFormRow'):
    print(div.text.strip())

Tags: 项目代码importdiv表单bs网站request
1条回答
网友
1楼 · 发布于 2024-05-15 10:47:11

你可以从一个页面抓取url并跟踪它们(大概)浏览整个站点。类似于这样的情况,这将需要一点按摩,这取决于你想从哪里开始,你想要什么页面:

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 finding部分放入一个函数中,并多次调用X,其中X是您要遍历的链接级别数。你知道吗

负责地刮。试着不要进入一个巫师学徒的情况下,你击中了一个循环网站一遍又一遍,或以下链接外部的网站。一般来说,我也不会把你想刮的那一页放进去。你知道吗

相关问题 更多 >