【发布时间】:2021-12-08 21:06:28
【问题描述】:
我是 Target.com 上的卖家,我正在尝试使用 Python (Python 3) 为我的目录中的每个产品抓取 URL。当我尝试这个时,我得到一个'urllist'的空列表,当我打印变量'soup'时,BS4实际收集的是内容“查看页面源”(请原谅我的天真,这绝对是新手! )。实际上,我真的很想从 Devtools 页面的“元素”部分中找到的内容中抓取 URL。我可以手动筛选该页面上的 html 并找到链接,所以我知道它们在那里......我只是还没有足够的知识告诉 BS4 那是我想要搜索的内容。我该怎么做?
import urllib.request, urllib.parse, urllib.error
from bs4 import BeautifulSoup
import ssl
#Need this part below for HTTPS
ctx=ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
#Needs that context = ctx line to deal with HTTPS
url = input('Enter URL: ')
urllist=[]
html = urllib.request.urlopen(url, context = ctx).read()
soup=BeautifulSoup(html, 'html.parser')
for link in soup.find_all('a'):
urllist.append(link.get('href'))
print(urllist)
如果有帮助,我发现有人用 Java 开发的代码可以从有效的开发人员控制台运行,并获取了我的所有链接。但我的目标是能够在 Python (Python 3) 中做到这一点
var x = document.querySelectorAll("a");
var myarray = []
for (var i=0; i<x.length; i++){
var nametext = x[i].textContent;
var cleantext = nametext.replace(/\s+/g, ' ').trim();
var cleanlink = x[i].href;
myarray.push([cleantext,cleanlink]);
};
function make_table() {
var table = '<table><thead><th>Name</th><th>Links</th></thead><tbody>';
for (var i=0; i<myarray.length; i++) {
table += '<tr><td>'+ myarray[i][0] + '</td><td>'+myarray[i][1]+'</td></tr>';
};
var w = window.open("");
w.document.write(table);
}
make_table()
【问题讨论】:
标签: python web-scraping beautifulsoup