.text使用BeautifuSoup中的数字和特殊键进行混乱

时间:2018-03-19 02:17:22

标签: html python-3.x proxy beautifulsoup python-requests

你好我现在正在使用Python 3,BeautifulSoup 4,以及要求从supremenewyork.com UK获取一些信息。我已经在脚本中实现了一个代理脚本(我知道它可以工作)。唯一的问题是这个网站不喜欢自动抓取这些信息的程序,所以他们决定加扰这个脚本,我认为它不能用作文本​​。

我的问题:有没有办法在不使用.text的情况下获取文本和/或有没有办法让脚本读取文本?当它看到#之类的特殊字符跳过它或者看到&时看到;跳过它直到看到supremetshirt 时才会看到文字?

因为基本上这个网站如何扰乱文本是通过这样做。下面是一个示例,检查元素时显示的文本是:



应该说“至尊T恤”等等(你明白了,他们不会用字母来加扰数字和特殊键)

当您使用英国最高网站上的VPN检查元素时,此import requests from bs4 import BeautifulSoup categorys = ['jackets', 'shirts', 'tops_sweaters', 'sweatshirts', 'pants', 'shorts', 't-shirts', 'hats', 'bags', 'accessories', 'shoes', 'skate'] catNumb = 0 #use new proxy every so often for testing (will add something that pulls proxys and usses them for you. UK_Proxy1 = '51.143.153.167:80' proxies = { 'http': 'http://' + UK_Proxy1 + '', 'https': 'https://' + UK_Proxy1 + '', } for cat in categorys: catStr = str(categorys[catNumb]) cUrl = 'http://www.supremenewyork.com/shop/all/' + catStr proxy_script = requests.get(cUrl, proxies=proxies).text bSoup = BeautifulSoup(proxy_script, 'lxml') print('\n*******************"'+ catStr.upper() + '"*******************\n') catNumb += 1 for item in bSoup.find_all('div', class_='inner-article'): url = item.a['href'] alt = item.find('img')['alt'] req = requests.get('http://www.supremenewyork.com' + url) item_soup = BeautifulSoup(req.text, 'lxml') name = item_soup.find('h1', itemprop='name').text #name = item_soup.find('h1', itemprop='name') style = item_soup.find('p', itemprop='model').text #style = item_soup.find('p', itemprop='model') print (alt +(' --- ')+ name +(' --- ')+ style) #print(alt) #print(str(name)) #print (str(style)) 会自动突出显示在框中,并且与文本(根本不突出显示)不同。每当我在没有代理代码的情况下运行我的脚本到我的本地supremenewyork.com时,它工作正常(但只是因为代码,而不是在我的本地网站上乱码,我想从英国网站上提取这些信息)任何想法?这是我的代码:

str

当我运行此脚本时,我收到此错误:

  

name = item_soup.find('h1',itemprop ='name')。text   AttributeError:'NoneType'对象没有属性'text'

所以我做的是我对上面标记为哈希标记的东西进行了哈希标记,并对其他类似但不同的东西进行哈希标记,并且我得到某种print(str(name))错误,所以我尝试了None。我可以打印alt罚款(每个脚本,alt不会被打乱),但是当打印名称和样式时,打印的每个alt代码下的所有打印都是lexsort

我一直在努力解决这个问题,并且没有解决方案。任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我使用这个解决方案解决了我自己的答案:

thetable = soup5.find('div', class_='turbolink_scroller')
items = thetable.find_all('div', class_='inner-article')
for item in items:
    alt = item.find('img')['alt']
    name = item.h1.a.text
    color = item.p.a.text
    print(alt,' --- ', name, ' --- ',color)